From: Anjo K. <an...@us...> - 2006-09-13 18:05:18
|
Update of /cvsroot/wonder/Wonder/Common/Frameworks/ERExtensions/Sources/er/extensions In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv10365/Frameworks/ERExtensions/Sources/er/extensions Modified Files: ERXConstant.java Log Message: javadoc Index: ERXConstant.java =================================================================== RCS file: /cvsroot/wonder/Wonder/Common/Frameworks/ERExtensions/Sources/er/extensions/ERXConstant.java,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** ERXConstant.java 11 Sep 2006 14:47:46 -0000 1.17 --- ERXConstant.java 13 Sep 2006 18:05:15 -0000 1.18 *************** *** 18,88 **** /** * Numerical constant class, useful when you want reference object that are not ! * bytes or strings in the DB like what you get with the factory classes. * <pre><code> ! ! public abstract class Test extends ERXGenericRecord { ! ! public static class Status extends ERXConstant { ! private String _name; ! ! protected Status(int value, String name) { ! super(value); ! _name = name; ! } ! ! public String name() { ! return _name; ! } ! } ! ! public Status OFF = new Status(0, "Off"); ! public Status ON = new Status(1, "On"); ! ! public Test() { ! super(); ! } ! ! public Status status() { ! return (Status)storedValueForKey("status"); ! } ! ! public void setStatus(Constant aValue) { ! takeStoredValueForKey(aValue, "status"); ! } ! ! public boolean isOn() { ! return status() == ON; ! } ! } ! ! Test test = (Test)EOUtilities.createAndInsertInstance(ec, "Test"); ! test.setTest(Test.Status.OFF); ! test = (Test)EOUtilities.createAndInsertInstance(ec, "Test"); ! test.setStatus(Test.Status.ON); ! ec.saveChanges(); ! ! NSArray objects; ! NSArray all = EOUtilities.objectsForEntityNamed(ec, "Test"); ! EOQualifier q; ! ! objects = EOUtilities.objectsMatchingKeyAndValue(ec, "Test", "status", Test.Status.OFF); ! log.info("Test.Status.OFF: " + objects); ! q = new EOKeyValueQualifier("status", EOQualifier.QualifierOperatorEqual, Test.Status.OFF); ! log.info("Test.Status.OFF: " + EOQualifier.filteredArrayWithQualifier(all, q)); ! ! // this might be a problem: equal number values match in the DB, but not in memory ! objects = EOUtilities.objectsMatchingKeyAndValue(ec, "Test", "status", ERXConstant.OneInteger); ! log.info("Number.OFF: " + objects); ! q = new EOKeyValueQualifier("status", EOQualifier.QualifierOperatorEqual, ERXConstant.OneInteger); ! log.info("Number.OFF: " + EOQualifier.filteredArrayWithQualifier(all, q)); ! ! // you can compare by equality ! test.getStatus() == Test.Status.ON ! * </pre></code> * You need to add an entry <code>ERXConstantClassName=Test.Status</code> to the attribute's userInfo * in question and your EO's class description needs to be a {@link er.extensions.ERXEntityClassDescription}. * <br /> ! * NOTE: your constants must be loaded for this to work, so you may need to add a * <code>Class c = SomeStatus.class</code> in your App constructor. * <br /> --- 18,87 ---- /** * Numerical constant class, useful when you want reference object that are not ! * bytes or strings in the DB like what you get with the factory classes. <br /> ! * And example would be: * <pre><code> ! * public abstract class Test extends ERXGenericRecord { ! * ! * public static class Status extends ERXConstant { ! * private String _name; ! * ! * protected Status(int value, String name) { ! * super(value); ! * _name = name; ! * } ! * ! * public String name() { ! * return _name; ! * } ! * } ! * ! * public Status OFF = new Status(0, "Off"); ! * public Status ON = new Status(1, "On"); ! * ! * public Test() { ! * super(); ! * } ! * ! * public Status status() { ! * return (Status)storedValueForKey("status"); ! * } ! * ! * public void setStatus(Constant aValue) { ! * takeStoredValueForKey(aValue, "status"); ! * } ! * ! * public boolean isOn() { ! * return status() == ON; ! * } ! * } ! * ! * Test test = (Test)EOUtilities.createAndInsertInstance(ec, "Test"); ! * test.setTest(Test.Status.OFF); ! * test = (Test)EOUtilities.createAndInsertInstance(ec, "Test"); ! * test.setStatus(Test.Status.ON); ! * ec.saveChanges(); ! * ! * NSArray objects; ! * NSArray all = EOUtilities.objectsForEntityNamed(ec, "Test"); ! * EOQualifier q; ! * ! * objects = EOUtilities.objectsMatchingKeyAndValue(ec, "Test", "status", Test.Status.OFF); ! * log.info("Test.Status.OFF: " + objects); ! * q = new EOKeyValueQualifier("status", EOQualifier.QualifierOperatorEqual, Test.Status.OFF); ! * log.info("Test.Status.OFF: " + EOQualifier.filteredArrayWithQualifier(all, q)); ! * ! * // this might be a problem: equal number values match in the DB, but not in memory ! * objects = EOUtilities.objectsMatchingKeyAndValue(ec, "Test", "status", ERXConstant.OneInteger); ! * log.info("Number.OFF: " + objects); ! * q = new EOKeyValueQualifier("status", EOQualifier.QualifierOperatorEqual, ERXConstant.OneInteger); ! * log.info("Number.OFF: " + EOQualifier.filteredArrayWithQualifier(all, q)); ! * ! * // you can compare by equality ! * test.getStatus() == Test.Status.ON * </pre></code> * You need to add an entry <code>ERXConstantClassName=Test.Status</code> to the attribute's userInfo * in question and your EO's class description needs to be a {@link er.extensions.ERXEntityClassDescription}. * <br /> ! * <b>NOTE:</b> your constants must be loaded for this to work, so you may need to add a * <code>Class c = SomeStatus.class</code> in your App constructor. * <br /> |