+ public static class UpdateEntityProducerNodeBuilder extends AbstractProducerNodeBuilder {
+ private final static String UPDATE_KEY_ATTRIBUTE = KEY_ATTRIBUTE;
+ private final static String UPDATE_DEFINITION_ATTRIBUTE = DEFINITION_ATTRIBUTE;
+ private final static String[] UPDATE_SUBNODES = {};
+
+ private String key;
+ private String definition;
+ private Map fieldValues;
+
+ private EntityAdapterModel model;
+
+ public UpdateEntityProducerNodeBuilder(EntityAdapterModel aModel) {
+ super(UPDATE_SUBNODES);
+
+ model = aModel;
+ fieldValues = new HashMap();
+ }
+
+ public void setAttributes(Map anAttributes) throws ProducerConfigExc, XMLReader.XMLReaderExc {
+ key = (String) anAttributes.get(UPDATE_KEY_ATTRIBUTE);
+
+ if (key == null)
+ throw new XMLReader.XMLReaderExc("missing required attribute '" + UPDATE_KEY_ATTRIBUTE + "'" );
+ definition = (String) anAttributes.get(UPDATE_DEFINITION_ATTRIBUTE);
+
+ fieldValues.putAll(anAttributes);
+ fieldValues.remove(UPDATE_KEY_ATTRIBUTE);
+ fieldValues.remove(UPDATE_DEFINITION_ATTRIBUTE);
+ };
+
+ public ProducerNode constructNode() {
+ return new EntityModifyingProducerNode(model, false, definition, key, fieldValues);
+ };
+
+ public static class factory implements ProducerNodeBuilderFactory {
+ private EntityAdapterModel model;
+
+ public factory(EntityAdapterModel aModel) {
+ model = aModel;
+ }
+
+ public ProducerNodeBuilder makeBuilder() {
+ return new UpdateEntityProducerNodeBuilder(model);
+ }
+ }
+ }
+
+////////////////////////////////////////////////////////////////////////////////
+
+ public static class CreateEntityProducerNodeBuilder extends AbstractProducerNodeBuilder {
+ private final static String CREATEENTITY_KEY_ATTRIBUTE = KEY_ATTRIBUTE;
+ private final static String CREATEENTITY_DEFINITION_ATTRIBUTE = DEFINITION_ATTRIBUTE;
+ private final static String[] CREATEENTITY_SUBNODES = {};
+
+ private String key;
+ private String definition;
+ private Map fieldValues;
+
+ private EntityAdapterModel model;
+
+ public CreateEntityProducerNodeBuilder(EntityAdapterModel aModel) {
+ super(CREATEENTITY_SUBNODES);
+
+ model = aModel;
+ fieldValues = new HashMap();
+ }
+
+ public void setAttributes(Map anAttributes) throws ProducerConfigExc, XMLReader.XMLReaderExc {
+ key = (String) anAttributes.get(CREATEENTITY_KEY_ATTRIBUTE);
+ definition = (String) anAttributes.get(CREATEENTITY_DEFINITION_ATTRIBUTE);
+
+ if (key == null)
+ throw new XMLReader.XMLReaderExc("missing required attribute '" + CREATEENTITY_KEY_ATTRIBUTE + "'" );
+ if (definition == null)
+ throw new XMLReader.XMLReaderExc("missing required attribute '" + CREATEENTITY_DEFINITION_ATTRIBUTE + "'" );
+
+ fieldValues.putAll(anAttributes);
+ fieldValues.remove(CREATEENTITY_KEY_ATTRIBUTE);
+ fieldValues.remove(CREATEENTITY_DEFINITION_ATTRIBUTE);
+ };
+
+ public ProducerNode constructNode() {
+ return new EntityModifyingProducerNode(model, true, definition, key, fieldValues);
+ };
+
+ public static class factory implements ProducerNodeBuilderFactory {
+ private EntityAdapterModel model;
+
+ public factory(EntityAdapterModel aModel) {
+ model = aModel;
+ }
+
+ public ProducerNodeBuilder makeBuilder() {
+ return new CreateEntityProducerNodeBuilder(model);
+ }
+ }
+ }
+
+////////////////////////////////////////////////////////////////////////////////
+