diff --git a/metafix/src/main/java/org/metafacture/metafix/Value.java b/metafix/src/main/java/org/metafacture/metafix/Value.java index b6193646..2fddd53d 100644 --- a/metafix/src/main/java/org/metafacture/metafix/Value.java +++ b/metafix/src/main/java/org/metafacture/metafix/Value.java @@ -255,6 +255,27 @@ public String toString() { public abstract String asString(); + private enum InsertMode { + + REPLACE { + @Override + void apply(final Hash hash, final String field, final String value) { + hash.put(field, new Value(value)); + } + }, + APPEND { + @Override + void apply(final Hash hash, final String field, final String value) { + final Value oldValue = hash.get(field); + final Value newValue = new Value(value); + hash.put(field, oldValue == null ? newValue : oldValue.merge(newValue)); + } + }; + + abstract void apply(Hash hash, String field, String value); + + } + } /** @@ -364,7 +385,7 @@ private Value findInValue(final String[] path, final Value value) { return result; } - private void insert(final InsertMode mode, final String[] fields, final String newValue) { + private void insert(final AbstractValueType.InsertMode mode, final String[] fields, final String newValue) { switch (fields[0]) { case ASTERISK: // TODO: WDCD? descend into the array? @@ -471,11 +492,11 @@ public void replace(final String field, final Value value) { } public Value replace(final String fieldPath, final String newValue) { - return insert(InsertMode.REPLACE, fieldPath, newValue); + return insert(AbstractValueType.InsertMode.REPLACE, fieldPath, newValue); } public Value append(final String fieldPath, final String newValue) { - return insert(InsertMode.APPEND, fieldPath, newValue); + return insert(AbstractValueType.InsertMode.APPEND, fieldPath, newValue); } /** @@ -545,11 +566,11 @@ public void add(final String field, final Value newValue) { put(field, oldValue == null ? newValue : oldValue.merge(newValue)); } - public Value insert(final InsertMode mode, final String fieldPath, final String newValue) { + public Value insert(final AbstractValueType.InsertMode mode, final String fieldPath, final String newValue) { return insert(mode, split(fieldPath), newValue); } - private Value insert(final InsertMode mode, final String[] fields, final String newValue) { + private Value insert(final AbstractValueType.InsertMode mode, final String[] fields, final String newValue) { final String field = fields[0]; if (field.equals(APPEND_FIELD) || field.equals(LAST_FIELD)) { // TODO: WDCD? $last, $append skipped for hashes here: @@ -700,24 +721,4 @@ public String asString() { } - private enum InsertMode { - - REPLACE { - @Override - void apply(final Hash h, final String field, final String value) { - h.put(field, new Value(value)); - } - }, - APPEND { - @Override - void apply(final Hash h, final String field, final String value) { - final Value oldValue = h.get(field); - final Value newValue = new Value(value); - h.put(field, oldValue == null ? newValue : oldValue.merge(newValue)); - } - }; - - abstract void apply(Hash h, String field, String value); - - } }