From: <pat...@us...> - 2010-09-20 16:48:53
|
Revision: 1134 http://cishell.svn.sourceforge.net/cishell/?rev=1134&view=rev Author: pataphil Date: 2010-09-20 16:48:46 +0000 (Mon, 20 Sep 2010) Log Message: ----------- * Fixed up Javadocs/comments for DataModel and DataModelField. * Added OneOccurrenceOfValueValidationRule (for allowing only one COUNT DISTINCT). * Minor cleanup in UniqueValueValidationRule. * Not reviewed. Modified Paths: -------------- trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/DataModel.java trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/field/DataModelField.java trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/field/validation/UniqueValueValidationRule.java Added Paths: ----------- trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/field/validation/OneOccurrenceOfValueValidationRule.java Modified: trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/DataModel.java =================================================================== --- trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/DataModel.java 2010-09-07 19:26:49 UTC (rev 1133) +++ trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/DataModel.java 2010-09-20 16:48:46 UTC (rev 1134) @@ -57,30 +57,30 @@ // DataModelAreaContainer methods - /// {@inheritDoc} + /** {@inheritDoc} */ public Collection<String> getAreaNames(); - /// {@inheritDoc} + /** {@inheritDoc} */ public Collection<DataModelArea> getAreas(); - /// {@inheritDoc} + /** {@inheritDoc} */ public DataModelArea getArea(String name); - /// {@inheritDoc} + /** {@inheritDoc} */ public DataModelArea createArea(String name) throws UniqueNameException; - /// {@inheritDoc} + /** {@inheritDoc} */ public DataModelArea createArea(String name, Object componentForArea) throws ClassCastException, ModelStructureException, UniqueNameException; - /// {@inheritDoc} + /** {@inheritDoc} */ public void addArea(DataModelArea area) throws ClassCastException, ModelStructureException, UniqueNameException; - /// {@inheritDoc} + /** {@inheritDoc} */ public boolean areaDisposed(String name); - /// {@inheritDoc} + /** {@inheritDoc} */ public boolean areaDisposed(DataModelArea area); // Group methods - /// @return all of the group names in this DataModel. + /** @return all of the group names in this DataModel. */ public Collection<String> getGroupNames(); - /// @return all of the groups in this DataModel. + /** @return all of the groups in this DataModel. */ public Collection<DataModelGroup> getGroups(); /** * Get a group by specific name. Modified: trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/field/DataModelField.java =================================================================== --- trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/field/DataModelField.java 2010-09-07 19:26:49 UTC (rev 1133) +++ trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/field/DataModelField.java 2010-09-20 16:48:46 UTC (rev 1134) @@ -21,15 +21,17 @@ public ValueType setValue(ValueType value); public ValueType reset(); - /// Add a validator to that should validate this field. + /** Add a validator that should validate this field. */ public void addValidator(FieldValidator<ValueType> validator); - /// Add validators that should be considered when performing validation actions. + /** Add all of the specified validators as validators that validate this field. */ + public void addValidators(Collection<FieldValidator<ValueType>> validators); + /** Add validators that should be considered when performing validation actions. */ public void addOtherValidators(Collection<FieldValidator<ValueType>> otherValidators); - /// Add an action to perform, given if everything validated or not. + /** Add an action to perform, given if everything validated or not. */ public void addValidationAction(FieldValidationAction action); - /// Notify everything that has added this field that this field has been disposed. + /** Notify everything that has added this field that this field has been disposed. */ public void dispose(); - /// Has this field been disposed? + /** Has this field been disposed? */ public boolean isDisposed(); } \ No newline at end of file Added: trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/field/validation/OneOccurrenceOfValueValidationRule.java =================================================================== --- trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/field/validation/OneOccurrenceOfValueValidationRule.java (rev 0) +++ trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/field/validation/OneOccurrenceOfValueValidationRule.java 2010-09-20 16:48:46 UTC (rev 1134) @@ -0,0 +1,56 @@ +package org.cishell.utility.datastructure.datamodel.field.validation; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.cishell.utilities.MapUtilities; +import org.cishell.utilities.StringUtilities; +import org.cishell.utility.datastructure.datamodel.DataModel; +import org.cishell.utility.datastructure.datamodel.exception.ModelValidationException; +import org.cishell.utility.datastructure.datamodel.field.DataModelField; + +public class OneOccurrenceOfValueValidationRule<ValueType> + implements FieldValidationRule<ValueType> { + private String baseFieldName; + private Collection<ValueType> targetValue = new ArrayList<ValueType>(1); + private Map<String, ValueType> fieldValuesByNames = new HashMap<String, ValueType>(); + + public OneOccurrenceOfValueValidationRule(String baseFieldName, ValueType targetValue) { + this.baseFieldName = baseFieldName; + this.targetValue.add(targetValue); + } + + public void validateField(DataModelField<ValueType> field, DataModel model) + throws ModelValidationException { + String fieldName = field.getName(); + ValueType fieldValue = field.getValue(); + + this.fieldValuesByNames.put(fieldName, fieldValue); + Collection<String> namesOfFieldsWithValue = MapUtilities.getValidKeysOfTypesInMap( + this.fieldValuesByNames, this.targetValue, new ArrayList<String>()); + + if (namesOfFieldsWithValue.size() > 1) { + String exceptionMessage = String.format( + "Field's value must be not identical. Matches %sfields: [%s]", + this.baseFieldName, + StringUtilities.implodeItems(namesOfFieldsWithValue, ", ")); + throw new ModelValidationException(exceptionMessage); + } + } + + public void fieldUpdated(DataModelField<ValueType> field) { + this.fieldValuesByNames.put(field.getName(), field.getValue()); + } + + public void fieldsUpdated(Collection<DataModelField<ValueType>> fields) { + for (DataModelField<ValueType> field : fields) { + fieldUpdated(field); + } + } + + public void fieldDisposed(DataModelField<ValueType> field) { + this.fieldValuesByNames.remove(field.getName()); + } +} \ No newline at end of file Modified: trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/field/validation/UniqueValueValidationRule.java =================================================================== --- trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/field/validation/UniqueValueValidationRule.java 2010-09-07 19:26:49 UTC (rev 1133) +++ trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/field/validation/UniqueValueValidationRule.java 2010-09-20 16:48:46 UTC (rev 1134) @@ -14,7 +14,6 @@ public class UniqueValueValidationRule<ValueType> implements FieldValidationRule<ValueType> { private String baseFieldName; private Map<String, ValueType> fieldValuesByNames = new HashMap<String, ValueType>(); -// private Multimap<ValueType, String> fieldNamesByValues = HashMultimap.create(); public UniqueValueValidationRule(String baseFieldName) { this.baseFieldName = baseFieldName; @@ -34,7 +33,7 @@ if (namesOfFieldsWithValue.size() > 0) { String exceptionMessage = String.format( - "Field's value must be identical. Matches %sfields: [%s]", + "Field's value must be not identical. Matches %sfields: [%s]", this.baseFieldName, StringUtilities.implodeItems(namesOfFieldsWithValue, ", ")); throw new ModelValidationException(exceptionMessage); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pat...@us...> - 2011-03-07 19:19:04
|
Revision: 1236 http://cishell.svn.sourceforge.net/cishell/?rev=1236&view=rev Author: pataphil Date: 2011-03-07 19:18:57 +0000 (Mon, 07 Mar 2011) Log Message: ----------- * Documentation. Modified Paths: -------------- trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/ModelDataSynchronizer.java trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/area/AbstractDataModelArea.java trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/area/DataModelArea.java trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/area/DataModelAreaContainer.java trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/field/DataModelFieldContainer.java trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/group/DataModelGroup.java trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/gui/AbstractGUIDataModel.java Modified: trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/ModelDataSynchronizer.java =================================================================== --- trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/ModelDataSynchronizer.java 2011-03-07 11:33:16 UTC (rev 1235) +++ trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/ModelDataSynchronizer.java 2011-03-07 19:18:57 UTC (rev 1236) @@ -1,7 +1,8 @@ package org.cishell.utility.datastructure.datamodel; -/** - * +/** ModelDataSynchronizer<T> is an interface for synchronizing DataModelFields to their actual + * GUI widgets. For this reason, most or all implementations of this interface will be + * GUI-specific. */ public interface ModelDataSynchronizer<T> { public int updateListenerCode(); Modified: trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/area/AbstractDataModelArea.java =================================================================== --- trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/area/AbstractDataModelArea.java 2011-03-07 11:33:16 UTC (rev 1235) +++ trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/area/AbstractDataModelArea.java 2011-03-07 19:18:57 UTC (rev 1236) @@ -8,6 +8,8 @@ import org.cishell.utility.datastructure.datamodel.exception.UniqueNameException; import org.cishell.utility.datastructure.datamodel.field.DataModelField; +/** See AbstractGUIDataModel. + */ public abstract class AbstractDataModelArea< BaseGUIComponentType, GUIContainerComponentType extends BaseGUIComponentType> implements DataModelArea { Modified: trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/area/DataModelArea.java =================================================================== --- trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/area/DataModelArea.java 2011-03-07 11:33:16 UTC (rev 1235) +++ trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/area/DataModelArea.java 2011-03-07 19:18:57 UTC (rev 1236) @@ -7,8 +7,7 @@ import org.cishell.utility.datastructure.datamodel.field.DataModelField; import org.cishell.utility.datastructure.datamodel.field.DataModelFieldContainer; -/** - * DataModelArea corresponds to a physical area tied to a DataModel GUI. +/** DataModelArea corresponds to a physical area tied to a DataModel GUI. * DataModelAreas can contain other DataModelAreas, as well as DataModelFields. */ public interface DataModelArea extends DataModelAreaContainer, DataModelFieldContainer { Modified: trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/area/DataModelAreaContainer.java =================================================================== --- trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/area/DataModelAreaContainer.java 2011-03-07 11:33:16 UTC (rev 1235) +++ trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/area/DataModelAreaContainer.java 2011-03-07 19:18:57 UTC (rev 1236) @@ -5,7 +5,10 @@ import org.cishell.utility.datastructure.datamodel.exception.ModelStructureException; import org.cishell.utility.datastructure.datamodel.exception.UniqueNameException; -// TODO: addToContainer type stuff +/** A DataModelAreaContainer is anything that contains DataModelAreas. For example, DataModel + * and DataModelArea itself both can contain (other) DataModelAreas. + * TODO: addToContainer type stuff. + */ public interface DataModelAreaContainer { public Collection<String> getAreaNames(); public Collection<DataModelArea> getAreas(); @@ -22,7 +25,7 @@ public void addArea(DataModelArea area) throws ClassCastException, ModelStructureException, UniqueNameException; - //TODO: why is this returning boolean? + // TODO: Why is this returning boolean? public boolean areaDisposed(String name); public boolean areaDisposed(DataModelArea area); } \ No newline at end of file Modified: trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/field/DataModelFieldContainer.java =================================================================== --- trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/field/DataModelFieldContainer.java 2011-03-07 11:33:16 UTC (rev 1235) +++ trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/field/DataModelFieldContainer.java 2011-03-07 19:18:57 UTC (rev 1236) @@ -4,6 +4,8 @@ import org.cishell.utility.datastructure.datamodel.exception.UniqueNameException; +/** A DataModelFieldContainer is anything that contains DataModelFields. + */ public interface DataModelFieldContainer { public Collection<String> getFieldNames(); public Collection<DataModelField<?>> getFields(); Modified: trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/group/DataModelGroup.java =================================================================== --- trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/group/DataModelGroup.java 2011-03-07 11:33:16 UTC (rev 1235) +++ trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/group/DataModelGroup.java 2011-03-07 19:18:57 UTC (rev 1236) @@ -6,8 +6,7 @@ import org.cishell.utility.datastructure.datamodel.field.DataModelField; import org.cishell.utility.datastructure.datamodel.field.DataModelFieldContainer; -/** - * Model groups are organizational structures for related DataModelFields. +/** Model groups are organizational structures for related DataModelFields. * They are not tied to the physical structure of a GUI. * Anything that wishes to retrieve data from a DataModel can ask for ModelGroups. */ Modified: trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/gui/AbstractGUIDataModel.java =================================================================== --- trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/gui/AbstractGUIDataModel.java 2011-03-07 11:33:16 UTC (rev 1235) +++ trunk/core/org.cishell.utility.datastructure/src/org/cishell/utility/datastructure/datamodel/gui/AbstractGUIDataModel.java 2011-03-07 19:18:57 UTC (rev 1236) @@ -12,8 +12,16 @@ import org.cishell.utility.datastructure.datamodel.group.BasicModelGroup; import org.cishell.utility.datastructure.datamodel.group.DataModelGroup; -/// TODO: Document this. -/// TODO: Figure out a way to generically express styles for both widgets and areas. +/** AbstractGUIDataModel is parameterized by BaseGUIComponentType and GUIContainerComponentType. + * It provides a default GUI-based implementation of DataModel that could be used in SWT, Swing, + * or any other Java GUI framework. + * BaseGUIComponentType should be the base type of the specific GUI framework widget (i.e. + * Control for SWT and Component for Swing. + * GUIContainerComponentType MUST extend BaseGUIComponentType, and in order for it to make any + * sense to this layer, it should be a GUI container type (i.e. Composite for SWT and + * Container for Swing). + * TODO: Figure out a way to generically express styles for both widgets and areas. + */ public abstract class AbstractGUIDataModel< BaseGUIComponentType, GUIContainerComponentType extends BaseGUIComponentType> implements DataModel { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |