command-line tool for fetching with EOF
There are too many things to write about. If I think about all the things I want to say about WebObjects, the things I think people should know, my head threatens to explode.Additionally, I do not know which of these things are important. Being inside the WebObjects group for so long has given me an odd perspective. There are things I care about that I think will seem arcane and inconsequential to others. It is hard to tell.
So, let us just start. There is a question which comes up occasionally, year after year, on the mailing lists. How does one create a tool for fetching with EOF? Let me just start with this. It is not complex, or even very interesting. But it is a start.
fetch.java:
package com.foo;
import com.webobjects.foundation.NSArray;
import com.webobjects.eoaccess.EOModelGroup;
import com.webobjects.eoaccess.EOUtilities;
import com.webobjects.eocontrol.EOEditingContext;
public class fetch {
public static void main(String[] arg) {
(new fetch()).fetch();
}
public void fetch() {
EOModelGroup group = EOModelGroup.defaultGroup();
try {
group.addModelWithPathURL(new java.net.URL("file:///Developer/Examples/JavaWebObjects/Frameworks/JavaBusinessLogic/Movies.eomodeld"));
}
catch (java.net.MalformedURLException mue) { System.out.println(mue.getMessage()); }
EOEditingContext ec = new EOEditingContext();
NSArray rows = EOUtilities.objectsForEntityNamed(ec, "Movie");
System.out.println("retrieved rows # "+rows.count());
}
}
build.xml:
<project name="fetch" default="compile" basedir=".">
<target name="setup"><mkdir dir="classes/com/foo" /></target>
<property name="SLF" value="/System/Library/Frameworks" />
<property name="fRJ" value="framework/Resources/Java" />
<property name="Foundation" value="${SLF}/JavaFoundation.${fRJ}/javafoundation.jar" />
<property name="EOAccess" value="${SLF}/JavaEOAccess.${fRJ}/javaeoaccess.jar" />
<property name="EOControl" value="${SLF}/JavaEOControl.${fRJ}/javaeocontrol.jar" />
<property name="XML" value="${SLF}/JavaXML.${fRJ}/javaxml.jar" />
<property name="JDBC" value="${SLF}/JavaJDBCAdaptor.${fRJ}/javajdbcadaptor.jar" />
<path id="build.path">
<pathelement path="${Foundation}" />
<pathelement path="${EOAccess}" />
<pathelement path="${EOControl}" />
</path>
<path id="exec.path">
<path refid="build.path" />
<pathelement path="${XML}" />
<pathelement path="${JDBC}" />
<pathelement path="classes" />
</path>
<target name="compile" depends="setup">
<javac srcdir="." destdir="classes" classpathref="build.path">
<include name="fetch.java" />
</javac>
</target>
<target name="exec" depends="compile"><java classname="com.foo.fetch" fork="true" classpathref="exec.path" /></target>
</project>