diff --git a/src/main/java/org/caosdb/server/entity/Entity.java b/src/main/java/org/caosdb/server/entity/Entity.java index 4550eebfc7fac884bcb781fc85112f9c811aae15..5bbcf46d4a2bf59456649de435ce0b97e97d82f7 100644 --- a/src/main/java/org/caosdb/server/entity/Entity.java +++ b/src/main/java/org/caosdb/server/entity/Entity.java @@ -51,7 +51,7 @@ import org.caosdb.server.entity.wrapper.Domain; import org.caosdb.server.entity.wrapper.Parent; import org.caosdb.server.entity.wrapper.Property; import org.caosdb.server.entity.xml.EntityToElementStrategy; -import org.caosdb.server.entity.xml.SetFieldStrategy; +import org.caosdb.server.entity.xml.SerializeFieldStrategy; import org.caosdb.server.entity.xml.ToElementStrategy; import org.caosdb.server.entity.xml.ToElementable; import org.caosdb.server.permissions.EntityACL; @@ -541,9 +541,9 @@ public class Entity extends AbstractObservable implements EntityInterface { } @Override - public SetFieldStrategy getSerializeFieldStrategy() { + public SerializeFieldStrategy getSerializeFieldStrategy() { if (this.serializeFieldStrategy == null) { - this.serializeFieldStrategy = new SetFieldStrategy(getSelections()); + this.serializeFieldStrategy = new SerializeFieldStrategy(getSelections()); } return this.serializeFieldStrategy; } @@ -554,7 +554,7 @@ public class Entity extends AbstractObservable implements EntityInterface { } @Override - public void addToElement(Element element, SetFieldStrategy strategy) { + public void addToElement(Element element, SerializeFieldStrategy strategy) { getToElementStrategy().addToElement(this, element, strategy); } @@ -938,7 +938,7 @@ public class Entity extends AbstractObservable implements EntityInterface { private boolean datatypeOverride = false; private Version version = new Version(); - private SetFieldStrategy serializeFieldStrategy = null; + private SerializeFieldStrategy serializeFieldStrategy = null; @Override public EntityInterface setDatatypeOverride(final boolean b) { @@ -1078,7 +1078,7 @@ public class Entity extends AbstractObservable implements EntityInterface { } @Override - public void setSerializeFieldStrategy(SetFieldStrategy s) { + public void setSerializeFieldStrategy(SerializeFieldStrategy s) { this.serializeFieldStrategy = s; } } diff --git a/src/main/java/org/caosdb/server/entity/EntityInterface.java b/src/main/java/org/caosdb/server/entity/EntityInterface.java index b26a40572e7258849b08ecaef052dd6151dd15b7..cfb4c28050f871684044c6216081101759a1cf17 100644 --- a/src/main/java/org/caosdb/server/entity/EntityInterface.java +++ b/src/main/java/org/caosdb/server/entity/EntityInterface.java @@ -34,7 +34,7 @@ import org.caosdb.server.entity.container.PropertyContainer; import org.caosdb.server.entity.wrapper.Domain; import org.caosdb.server.entity.wrapper.Parent; import org.caosdb.server.entity.wrapper.Property; -import org.caosdb.server.entity.xml.SetFieldStrategy; +import org.caosdb.server.entity.xml.SerializeFieldStrategy; import org.caosdb.server.entity.xml.ToElementable; import org.caosdb.server.jobs.JobTarget; import org.caosdb.server.permissions.EntityACL; @@ -189,7 +189,7 @@ public interface EntityInterface public abstract void setVersion(Version version); - public abstract void addToElement(Element element, SetFieldStrategy strategy); + public abstract void addToElement(Element element, SerializeFieldStrategy strategy); /** Return true iff the data type is present and is an instance of ReferenceDatatype. */ public abstract boolean isReference(); @@ -200,5 +200,5 @@ public interface EntityInterface */ public abstract boolean isReferenceList(); - public abstract SetFieldStrategy getSerializeFieldStrategy(); + public abstract SerializeFieldStrategy getSerializeFieldStrategy(); } diff --git a/src/main/java/org/caosdb/server/entity/TransactionEntity.java b/src/main/java/org/caosdb/server/entity/TransactionEntity.java index 0c41c180fc3bedaa74b07eb04f5135422b6ccc94..976106223800802cd3e885baaad5d0113d9726da 100644 --- a/src/main/java/org/caosdb/server/entity/TransactionEntity.java +++ b/src/main/java/org/caosdb/server/entity/TransactionEntity.java @@ -25,7 +25,7 @@ package org.caosdb.server.entity; import java.util.List; import java.util.Map; import java.util.Set; -import org.caosdb.server.entity.xml.SetFieldStrategy; +import org.caosdb.server.entity.xml.SerializeFieldStrategy; import org.caosdb.server.entity.xml.ToElementStrategy; import org.caosdb.server.entity.xml.ToElementable; import org.caosdb.server.query.Query.Selection; @@ -48,7 +48,7 @@ public interface TransactionEntity { public abstract void setToElementStragegy(ToElementStrategy s); - public abstract void setSerializeFieldStrategy(SetFieldStrategy s); + public abstract void setSerializeFieldStrategy(SerializeFieldStrategy s); public abstract Element toElement(); diff --git a/src/main/java/org/caosdb/server/entity/container/ParentContainer.java b/src/main/java/org/caosdb/server/entity/container/ParentContainer.java index 90c6078a47471712ac51448ac4aac3d05794f5a6..896a355c5f2df67a542ec17b0710777c543313ef 100644 --- a/src/main/java/org/caosdb/server/entity/container/ParentContainer.java +++ b/src/main/java/org/caosdb/server/entity/container/ParentContainer.java @@ -26,7 +26,7 @@ import org.caosdb.server.entity.Entity; import org.caosdb.server.entity.EntityInterface; import org.caosdb.server.entity.wrapper.Parent; import org.caosdb.server.entity.xml.ParentToElementStrategy; -import org.caosdb.server.entity.xml.SetFieldStrategy; +import org.caosdb.server.entity.xml.SerializeFieldStrategy; import org.caosdb.server.entity.xml.ToElementStrategy; import org.caosdb.server.utils.EntityStatus; import org.caosdb.server.utils.Observable; @@ -51,10 +51,10 @@ public class ParentContainer extends Container<Parent> { } public Element addToElement(final Element element) { - final SetFieldStrategy setFieldStrategy = - new SetFieldStrategy(this.child.getSelections()).forProperty("parent"); + final SerializeFieldStrategy serializeFieldStrategy = + new SerializeFieldStrategy(this.child.getSelections()).forProperty("parent"); for (final EntityInterface entity : this) { - s.addToElement(entity, element, setFieldStrategy); + s.addToElement(entity, element, serializeFieldStrategy); } return element; } diff --git a/src/main/java/org/caosdb/server/entity/container/PropertyContainer.java b/src/main/java/org/caosdb/server/entity/container/PropertyContainer.java index f5cce963fa4611bbdebfacdb11f98497c2a68544..2a6593d1e801cdd795756d58cc38e66b8f3b919b 100644 --- a/src/main/java/org/caosdb/server/entity/container/PropertyContainer.java +++ b/src/main/java/org/caosdb/server/entity/container/PropertyContainer.java @@ -31,7 +31,7 @@ import org.caosdb.server.entity.Entity; import org.caosdb.server.entity.EntityInterface; import org.caosdb.server.entity.wrapper.Property; import org.caosdb.server.entity.xml.PropertyToElementStrategy; -import org.caosdb.server.entity.xml.SetFieldStrategy; +import org.caosdb.server.entity.xml.SerializeFieldStrategy; import org.caosdb.server.entity.xml.ToElementStrategy; import org.caosdb.server.utils.EntityStatus; import org.caosdb.server.utils.Observable; @@ -72,12 +72,12 @@ public class PropertyContainer extends Container<Property> { * * @param property * @param element - * @param setFieldStrategy + * @param serializeFieldStrategy */ public void addToElement( - EntityInterface property, Element element, SetFieldStrategy setFieldStrategy) { - if (setFieldStrategy.isToBeSet(property.getName())) { - SetFieldStrategy strategy = setFieldStrategy.forProperty(property.getName()); + EntityInterface property, Element element, SerializeFieldStrategy serializeFieldStrategy) { + if (serializeFieldStrategy.isToBeSet(property.getName())) { + SerializeFieldStrategy strategy = serializeFieldStrategy.forProperty(property.getName()); this.s.addToElement(property, element, strategy); } } @@ -86,12 +86,13 @@ public class PropertyContainer extends Container<Property> { * Add all properties to the element using the given setFieldStrategy. * * @param element - * @param setFieldStrategy + * @param serializeFieldStrategy */ - public void addToElement(final Element element, final SetFieldStrategy setFieldStrategy) { + public void addToElement( + final Element element, final SerializeFieldStrategy serializeFieldStrategy) { sort(); for (final EntityInterface property : this) { - addToElement(property, element, setFieldStrategy); + addToElement(property, element, serializeFieldStrategy); } } diff --git a/src/main/java/org/caosdb/server/entity/wrapper/EntityWrapper.java b/src/main/java/org/caosdb/server/entity/wrapper/EntityWrapper.java index f8ccfa9385163efadec1be4ed901e151ef4ec35d..a03f0bfb8a4d77aa99319697cba61d18c64f68ba 100644 --- a/src/main/java/org/caosdb/server/entity/wrapper/EntityWrapper.java +++ b/src/main/java/org/caosdb/server/entity/wrapper/EntityWrapper.java @@ -41,7 +41,7 @@ import org.caosdb.server.entity.StatementStatus; import org.caosdb.server.entity.Version; import org.caosdb.server.entity.container.ParentContainer; import org.caosdb.server.entity.container.PropertyContainer; -import org.caosdb.server.entity.xml.SetFieldStrategy; +import org.caosdb.server.entity.xml.SerializeFieldStrategy; import org.caosdb.server.entity.xml.ToElementStrategy; import org.caosdb.server.entity.xml.ToElementable; import org.caosdb.server.permissions.EntityACL; @@ -562,7 +562,7 @@ public class EntityWrapper implements EntityInterface { } @Override - public void addToElement(Element element, SetFieldStrategy strategy) { + public void addToElement(Element element, SerializeFieldStrategy strategy) { this.entity.addToElement(element, strategy); } @@ -577,12 +577,12 @@ public class EntityWrapper implements EntityInterface { } @Override - public void setSerializeFieldStrategy(SetFieldStrategy s) { + public void setSerializeFieldStrategy(SerializeFieldStrategy s) { this.entity.setSerializeFieldStrategy(s); } @Override - public SetFieldStrategy getSerializeFieldStrategy() { + public SerializeFieldStrategy getSerializeFieldStrategy() { return this.entity.getSerializeFieldStrategy(); } } diff --git a/src/main/java/org/caosdb/server/entity/xml/DomainToElementStrategy.java b/src/main/java/org/caosdb/server/entity/xml/DomainToElementStrategy.java index a8b600793a6fdaf8d15ec499112cc06771f66fc3..9480119221aec4fa31c44b812539928327d97ccd 100644 --- a/src/main/java/org/caosdb/server/entity/xml/DomainToElementStrategy.java +++ b/src/main/java/org/caosdb/server/entity/xml/DomainToElementStrategy.java @@ -39,9 +39,10 @@ public class DomainToElementStrategy extends EntityToElementStrategy { } @Override - public Element toElement(final EntityInterface entity, final SetFieldStrategy setFieldStrategy) { + public Element toElement( + final EntityInterface entity, final SerializeFieldStrategy serializeFieldStrategy) { Element element = new Element(tagName); - sparseEntityToElement(element, entity, setFieldStrategy); + sparseEntityToElement(element, entity, serializeFieldStrategy); return element; } @@ -49,8 +50,8 @@ public class DomainToElementStrategy extends EntityToElementStrategy { public Element addToElement( final EntityInterface entity, final Element element, - final SetFieldStrategy setFieldStrategy) { - element.addContent(toElement(entity, setFieldStrategy)); + final SerializeFieldStrategy serializeFieldStrategy) { + element.addContent(toElement(entity, serializeFieldStrategy)); return element; } } diff --git a/src/main/java/org/caosdb/server/entity/xml/EntityToElementStrategy.java b/src/main/java/org/caosdb/server/entity/xml/EntityToElementStrategy.java index 3ca8eecc385270e708588516e931e80c886f9ba9..47a60928157f874680561dcf444592dad0a99ed6 100644 --- a/src/main/java/org/caosdb/server/entity/xml/EntityToElementStrategy.java +++ b/src/main/java/org/caosdb/server/entity/xml/EntityToElementStrategy.java @@ -76,57 +76,57 @@ public class EntityToElementStrategy implements ToElementStrategy { * * @param element * @param entity - * @param setFieldStrategy + * @param serializeFieldStrategy */ public void sparseEntityToElement( final Element element, final EntityInterface entity, - final SetFieldStrategy setFieldStrategy) { + final SerializeFieldStrategy serializeFieldStrategy) { if (entity.getEntityACL() != null) { element.addContent(entity.getEntityACL().getPermissionsFor(SecurityUtils.getSubject())); } - if (setFieldStrategy.isToBeSet("id") && entity.hasId()) { + if (serializeFieldStrategy.isToBeSet("id") && entity.hasId()) { element.setAttribute("id", Integer.toString(entity.getId())); } - if (setFieldStrategy.isToBeSet("version") && entity.hasVersion()) { + if (serializeFieldStrategy.isToBeSet("version") && entity.hasVersion()) { Element v = new VersionXMLSerializer().toElement(entity.getVersion()); element.addContent(v); } - if (setFieldStrategy.isToBeSet("cuid") && entity.hasCuid()) { + if (serializeFieldStrategy.isToBeSet("cuid") && entity.hasCuid()) { element.setAttribute("cuid", entity.getCuid()); } - if (setFieldStrategy.isToBeSet("name") && entity.hasName()) { + if (serializeFieldStrategy.isToBeSet("name") && entity.hasName()) { element.setAttribute("name", entity.getName()); } - if (setFieldStrategy.isToBeSet("description") && entity.hasDescription()) { + if (serializeFieldStrategy.isToBeSet("description") && entity.hasDescription()) { element.setAttribute("description", entity.getDescription()); } - if (setFieldStrategy.isToBeSet("datatype") && entity.hasDatatype()) { + if (serializeFieldStrategy.isToBeSet("datatype") && entity.hasDatatype()) { setDatatype(entity, element); } - if (setFieldStrategy.isToBeSet("message") && entity.hasMessages()) { + if (serializeFieldStrategy.isToBeSet("message") && entity.hasMessages()) { for (final ToElementable m : entity.getMessages()) { m.addToElement(element); } } else { - if (setFieldStrategy.isToBeSet("error")) { + if (serializeFieldStrategy.isToBeSet("error")) { for (ToElementable m : entity.getMessages("error")) { m.addToElement(element); } } - if (setFieldStrategy.isToBeSet("warning")) { + if (serializeFieldStrategy.isToBeSet("warning")) { for (ToElementable m : entity.getMessages("warning")) { m.addToElement(element); } } - if (setFieldStrategy.isToBeSet("info")) { + if (serializeFieldStrategy.isToBeSet("info")) { for (ToElementable m : entity.getMessages("info")) { m.addToElement(element); } } } - if (setFieldStrategy.isToBeSet("query") && entity.getQueryTemplateDefinition() != null) { + if (serializeFieldStrategy.isToBeSet("query") && entity.getQueryTemplateDefinition() != null) { final Element q = new Element("Query"); q.setText(entity.getQueryTemplateDefinition()); element.addContent(q); @@ -143,9 +143,10 @@ public class EntityToElementStrategy implements ToElementStrategy { * * @param entity * @param element - * @param setFieldStrategy + * @param serializeFieldStrategy */ - public void setValue(EntityInterface entity, Element element, SetFieldStrategy setFieldStrategy) { + public void setValue( + EntityInterface entity, Element element, SerializeFieldStrategy serializeFieldStrategy) { if (entity.hasValue()) { try { entity.parseValue(); @@ -155,7 +156,7 @@ public class EntityToElementStrategy implements ToElementStrategy { // CheckValueParsable job. } - if (entity.isReference() && setFieldStrategy.isToBeSet("_referenced")) { + if (entity.isReference() && serializeFieldStrategy.isToBeSet("_referenced")) { // Append the complete entity. This needs to be done when we are // processing SELECT Queries. EntityInterface ref = ((ReferenceValue) entity.getValue()).getEntity(); @@ -163,12 +164,12 @@ public class EntityToElementStrategy implements ToElementStrategy { if (entity.hasDatatype()) { setDatatype(entity, element); } - ref.addToElement(element, setFieldStrategy); + ref.addToElement(element, serializeFieldStrategy); // the referenced entity has been appended. Return here to suppress // adding the reference id as well. return; } - } else if (entity.isReferenceList() && setFieldStrategy.isToBeSet("_referenced")) { + } else if (entity.isReferenceList() && serializeFieldStrategy.isToBeSet("_referenced")) { // Append the all referenced entities. This needs to be done when we are // processing SELECT Queries. boolean skipValue = false; @@ -179,7 +180,7 @@ public class EntityToElementStrategy implements ToElementStrategy { setDatatype(entity, element); } Element valueElem = new Element("Value"); - ref.addToElement(valueElem, setFieldStrategy); + ref.addToElement(valueElem, serializeFieldStrategy); element.addContent(valueElem); skipValue = true; } @@ -190,7 +191,7 @@ public class EntityToElementStrategy implements ToElementStrategy { return; } - if (setFieldStrategy.isToBeSet("value")) { + if (serializeFieldStrategy.isToBeSet("value")) { if (entity.hasDatatype()) { setDatatype(entity, element); } @@ -200,24 +201,25 @@ public class EntityToElementStrategy implements ToElementStrategy { } @Override - public Element toElement(final EntityInterface entity, final SetFieldStrategy setFieldStrategy) { + public Element toElement( + final EntityInterface entity, final SerializeFieldStrategy serializeFieldStrategy) { final Element element = new Element(tagName); // always have the values at the beginning of the children - setValue(entity, element, setFieldStrategy); + setValue(entity, element, serializeFieldStrategy); - sparseEntityToElement(element, entity, setFieldStrategy); + sparseEntityToElement(element, entity, serializeFieldStrategy); - if (entity.hasStatementStatus() && setFieldStrategy.isToBeSet("importance")) { + if (entity.hasStatementStatus() && serializeFieldStrategy.isToBeSet("importance")) { element.setAttribute("importance", entity.getStatementStatus().toString()); } - if (entity.hasParents() && setFieldStrategy.isToBeSet("parent")) { + if (entity.hasParents() && serializeFieldStrategy.isToBeSet("parent")) { entity.getParents().addToElement(element); } if (entity.hasProperties()) { - entity.getProperties().addToElement(element, setFieldStrategy); + entity.getProperties().addToElement(element, serializeFieldStrategy); } - if (entity.hasTransactionLogMessages() && setFieldStrategy.isToBeSet("history")) { + if (entity.hasTransactionLogMessages() && serializeFieldStrategy.isToBeSet("history")) { for (final TransactionLogMessage t : entity.getTransactionLogMessages()) { t.xmlAppendTo(element); } @@ -227,9 +229,11 @@ public class EntityToElementStrategy implements ToElementStrategy { @Override public Element addToElement( - final EntityInterface entity, final Element parent, final SetFieldStrategy setFieldStrategy) { + final EntityInterface entity, + final Element parent, + final SerializeFieldStrategy serializeFieldStrategy) { if (entity.getEntityStatus() != EntityStatus.IGNORE) { - parent.addContent(toElement(entity, setFieldStrategy)); + parent.addContent(toElement(entity, serializeFieldStrategy)); } return parent; } diff --git a/src/main/java/org/caosdb/server/entity/xml/FileToElementStrategy.java b/src/main/java/org/caosdb/server/entity/xml/FileToElementStrategy.java index 7ac394a2e3f226afa6f4723daadc95c63db69b25..288159809057d08f57c71dc7cd6decf8adc3be73 100644 --- a/src/main/java/org/caosdb/server/entity/xml/FileToElementStrategy.java +++ b/src/main/java/org/caosdb/server/entity/xml/FileToElementStrategy.java @@ -33,17 +33,19 @@ public class FileToElementStrategy extends EntityToElementStrategy { } @Override - public Element toElement(final EntityInterface entity, final SetFieldStrategy setFieldStrategy) { - final Element element = super.toElement(entity, setFieldStrategy); + public Element toElement( + final EntityInterface entity, final SerializeFieldStrategy serializeFieldStrategy) { + final Element element = super.toElement(entity, serializeFieldStrategy); if (entity.hasFileProperties()) { - if (setFieldStrategy.isToBeSet("checksum") && entity.getFileProperties().hasChecksum()) { + if (serializeFieldStrategy.isToBeSet("checksum") + && entity.getFileProperties().hasChecksum()) { element.setAttribute(new Attribute("checksum", entity.getFileProperties().getChecksum())); } - if (setFieldStrategy.isToBeSet("path") && entity.getFileProperties().hasPath()) { + if (serializeFieldStrategy.isToBeSet("path") && entity.getFileProperties().hasPath()) { element.setAttribute(new Attribute("path", "/" + entity.getFileProperties().getPath())); } - if (setFieldStrategy.isToBeSet("size") && entity.getFileProperties().hasSize()) { + if (serializeFieldStrategy.isToBeSet("size") && entity.getFileProperties().hasSize()) { element.setAttribute( new Attribute("size", Long.toString(entity.getFileProperties().getSize()))); } diff --git a/src/main/java/org/caosdb/server/entity/xml/IdAndServerMessagesOnlyStrategy.java b/src/main/java/org/caosdb/server/entity/xml/IdAndServerMessagesOnlyStrategy.java index d61d0b5111a094d294e930751e7bd6fed6aa1428..6ddccbc4ce0f6f045fff9e5236dd7d20776a512d 100644 --- a/src/main/java/org/caosdb/server/entity/xml/IdAndServerMessagesOnlyStrategy.java +++ b/src/main/java/org/caosdb/server/entity/xml/IdAndServerMessagesOnlyStrategy.java @@ -1,6 +1,14 @@ package org.caosdb.server.entity.xml; -public class IdAndServerMessagesOnlyStrategy extends SetFieldStrategy { +/** + * Special purpose subclass of {@link SerializeFieldStrategy} which only serializes the id and the + * server messages (error, warning, info). + * + * <p>This strategy is used when the client doesn't have the permission to retrieve and entity. + * + * @author Timm Fitschen <t.fitschen@indiscale.com> + */ +public class IdAndServerMessagesOnlyStrategy extends SerializeFieldStrategy { @Override public boolean isToBeSet(String field) { diff --git a/src/main/java/org/caosdb/server/entity/xml/ParentToElementStrategy.java b/src/main/java/org/caosdb/server/entity/xml/ParentToElementStrategy.java index 29c163dc5ca55b731aa44a85224821c41356e35a..4f7906829427a2305f0f1b2addf72d2b69112a9e 100644 --- a/src/main/java/org/caosdb/server/entity/xml/ParentToElementStrategy.java +++ b/src/main/java/org/caosdb/server/entity/xml/ParentToElementStrategy.java @@ -41,7 +41,8 @@ public class ParentToElementStrategy extends EntityToElementStrategy { } @Override - public Element toElement(final EntityInterface entity, final SetFieldStrategy setFieldStrategy) { + public Element toElement( + final EntityInterface entity, final SerializeFieldStrategy setFieldStrategy) { final Element element = new Element(this.tagName); sparseEntityToElement(element, entity, setFieldStrategy); final Parent parent = (Parent) entity; @@ -55,7 +56,7 @@ public class ParentToElementStrategy extends EntityToElementStrategy { public Element addToElement( final EntityInterface entity, final Element element, - final SetFieldStrategy setFieldStrategy) { + final SerializeFieldStrategy setFieldStrategy) { if (entity.getEntityStatus() != EntityStatus.IGNORE) { element.addContent(toElement(entity, setFieldStrategy)); } diff --git a/src/main/java/org/caosdb/server/entity/xml/PropertyToElementStrategy.java b/src/main/java/org/caosdb/server/entity/xml/PropertyToElementStrategy.java index 60014d82b18da4e8dfdd5fe0bcf042171c2bdda7..23fd8a553e66df23349c20e8539e3154f3e2ac0a 100644 --- a/src/main/java/org/caosdb/server/entity/xml/PropertyToElementStrategy.java +++ b/src/main/java/org/caosdb/server/entity/xml/PropertyToElementStrategy.java @@ -39,7 +39,7 @@ public class PropertyToElementStrategy extends EntityToElementStrategy { public Element addToElement( final EntityInterface entity, final Element element, - final SetFieldStrategy setFieldStrategy) { + final SerializeFieldStrategy setFieldStrategy) { try { final Value v = entity.getValue(); if (entity.hasId()) { diff --git a/src/main/java/org/caosdb/server/entity/xml/SetFieldStrategy.java b/src/main/java/org/caosdb/server/entity/xml/SerializeFieldStrategy.java similarity index 88% rename from src/main/java/org/caosdb/server/entity/xml/SetFieldStrategy.java rename to src/main/java/org/caosdb/server/entity/xml/SerializeFieldStrategy.java index a858728466732faea86db7083b6ba60b25e6544e..30210118c0fe8c7b88f0f56532560c49c3782cc0 100644 --- a/src/main/java/org/caosdb/server/entity/xml/SetFieldStrategy.java +++ b/src/main/java/org/caosdb/server/entity/xml/SerializeFieldStrategy.java @@ -39,7 +39,7 @@ import org.caosdb.server.query.Query.Selection; * * @author Timm Fitschen <t.fitschen@indiscale.com> */ -public class SetFieldStrategy { +public class SerializeFieldStrategy { private final List<Selection> selections = new LinkedList<Selection>(); private HashMap<String, Boolean> cache = null; @@ -48,25 +48,25 @@ public class SetFieldStrategy { * The default is: Any field should be included into the serialization, unless it is a referenced * entity. */ - private static final SetFieldStrategy defaultSelections = - new SetFieldStrategy(null) { + private static final SerializeFieldStrategy defaultSelections = + new SerializeFieldStrategy(null) { @Override public boolean isToBeSet(final String field) { return field == null || !field.equalsIgnoreCase("_referenced"); } }; - public SetFieldStrategy(final List<Selection> selections) { + public SerializeFieldStrategy(final List<Selection> selections) { if (selections != null) { this.selections.addAll(selections); } } - public SetFieldStrategy() { + public SerializeFieldStrategy() { this(null); } - public SetFieldStrategy addSelection(final Selection selection) { + public SerializeFieldStrategy addSelection(final Selection selection) { // ignore null if (selection == null) { return this; @@ -80,15 +80,15 @@ public class SetFieldStrategy { return this; } - public SetFieldStrategy forProperty(final EntityInterface property) { + public SerializeFieldStrategy forProperty(final EntityInterface property) { return forProperty(property.getName()); } /** Return the strategy for a property. */ - public SetFieldStrategy forProperty(final String name) { + public SerializeFieldStrategy forProperty(final String name) { // if property is to be omitted: always-false-strategy if (!isToBeSet(name)) { - return new SetFieldStrategy() { + return new SerializeFieldStrategy() { @Override public boolean isToBeSet(final String field) { return false; @@ -111,7 +111,7 @@ public class SetFieldStrategy { * <p>This is the case when the selections are deeply nested but only the very last segments * are actually used, e.g ["a.b.c.d1", "a.b.c.d2"]. */ - return new SetFieldStrategy() { + return new SerializeFieldStrategy() { // Return true for everything except version fields. @Override public boolean isToBeSet(String field) { @@ -119,7 +119,7 @@ public class SetFieldStrategy { } }; } - return new SetFieldStrategy(subselections); + return new SerializeFieldStrategy(subselections); } public boolean isToBeSet(final String field) { diff --git a/src/main/java/org/caosdb/server/entity/xml/ToElementStrategy.java b/src/main/java/org/caosdb/server/entity/xml/ToElementStrategy.java index 81a7074c90df84f88ff3104c84662cb9a7a56433..01e114a25253865e164ca02d6cf42690c57cca0b 100644 --- a/src/main/java/org/caosdb/server/entity/xml/ToElementStrategy.java +++ b/src/main/java/org/caosdb/server/entity/xml/ToElementStrategy.java @@ -27,8 +27,8 @@ import org.jdom2.Element; public interface ToElementStrategy { - public Element toElement(EntityInterface entity, SetFieldStrategy setFieldStrategy); + public Element toElement(EntityInterface entity, SerializeFieldStrategy setFieldStrategy); public Element addToElement( - EntityInterface entity, Element parent, SetFieldStrategy setFieldStrategy); + EntityInterface entity, Element parent, SerializeFieldStrategy setFieldStrategy); } diff --git a/src/main/java/org/caosdb/server/grpc/CaosDBToGrpcConverters.java b/src/main/java/org/caosdb/server/grpc/CaosDBToGrpcConverters.java index 97253fde681de1bd8a49eb40400c37fc76605cba..4ee9fcdf78e7fcda398af60081be176b4936353c 100644 --- a/src/main/java/org/caosdb/server/grpc/CaosDBToGrpcConverters.java +++ b/src/main/java/org/caosdb/server/grpc/CaosDBToGrpcConverters.java @@ -71,7 +71,7 @@ import org.caosdb.server.entity.Role; import org.caosdb.server.entity.StatementStatus; import org.caosdb.server.entity.container.ParentContainer; import org.caosdb.server.entity.wrapper.Property; -import org.caosdb.server.entity.xml.SetFieldStrategy; +import org.caosdb.server.entity.xml.SerializeFieldStrategy; import org.caosdb.server.permissions.EntityACI; import org.caosdb.server.permissions.EntityPermission; @@ -98,7 +98,7 @@ public class CaosDBToGrpcConverters { public EntityResponse.Builder convert(final EntityInterface from) { - SetFieldStrategy s = from.getSerializeFieldStrategy(); + SerializeFieldStrategy s = from.getSerializeFieldStrategy(); final Builder entityBuilder = Entity.newBuilder(); if (from.hasId() && s.isToBeSet("id")) { @@ -151,7 +151,7 @@ public class CaosDBToGrpcConverters { return responseBuilder; } - private FileDescriptor.Builder convert(SetFieldStrategy s, FileProperties fileProperties) { + private FileDescriptor.Builder convert(SerializeFieldStrategy s, FileProperties fileProperties) { FileDescriptor.Builder result = null; if (s.isToBeSet("path")) { result = FileDescriptor.newBuilder(); @@ -229,7 +229,7 @@ public class CaosDBToGrpcConverters { final org.caosdb.api.entity.v1.Property.Builder builder = org.caosdb.api.entity.v1.Property.newBuilder(); - SetFieldStrategy s = from.getSerializeFieldStrategy(); + SerializeFieldStrategy s = from.getSerializeFieldStrategy(); if (from.hasId() && s.isToBeSet("id")) { builder.setId(from.getId().toString()); } @@ -504,7 +504,7 @@ public class CaosDBToGrpcConverters { public void appendMessages( final EntityInterface from, final org.caosdb.api.entity.v1.EntityResponse.Builder builder) { - SetFieldStrategy s = from.getSerializeFieldStrategy(); + SerializeFieldStrategy s = from.getSerializeFieldStrategy(); if (from.hasMessage(Message.MessageType.Error.toString()) && s.isToBeSet("error")) { builder.addAllErrors(convert(from.getMessages(Message.MessageType.Error.toString()))); } @@ -518,7 +518,7 @@ public class CaosDBToGrpcConverters { public void appendMessages( final EntityInterface from, final org.caosdb.api.entity.v1.IdResponse.Builder builder) { - SetFieldStrategy s = from.getSerializeFieldStrategy(); + SerializeFieldStrategy s = from.getSerializeFieldStrategy(); if (from.hasMessage(Message.MessageType.Error.toString()) && s.isToBeSet("error")) { builder.addAllErrors(convert(from.getMessages(Message.MessageType.Error.toString()))); } diff --git a/src/test/java/org/caosdb/server/entity/SelectionTest.java b/src/test/java/org/caosdb/server/entity/SelectionTest.java index 0ede3a970be6504ef0a89868aed40e4cadb141d0..26fbf413d42e66ccb5c65759a65dbb08a9d94df5 100644 --- a/src/test/java/org/caosdb/server/entity/SelectionTest.java +++ b/src/test/java/org/caosdb/server/entity/SelectionTest.java @@ -30,7 +30,7 @@ import static org.junit.Assert.assertTrue; import java.io.IOException; import org.caosdb.server.CaosDBServer; -import org.caosdb.server.entity.xml.SetFieldStrategy; +import org.caosdb.server.entity.xml.SerializeFieldStrategy; import org.caosdb.server.query.Query; import org.caosdb.server.query.Query.Selection; import org.junit.Assert; @@ -46,7 +46,7 @@ public class SelectionTest { @Test public void testEmpty1() { - final SetFieldStrategy setFieldStrategy = new SetFieldStrategy(); + final SerializeFieldStrategy setFieldStrategy = new SerializeFieldStrategy(); Assert.assertTrue(setFieldStrategy.isToBeSet("id")); Assert.assertTrue(setFieldStrategy.isToBeSet("name")); @@ -64,7 +64,8 @@ public class SelectionTest { @Test public void testName1() { final Selection selection = new Selection("name"); - final SetFieldStrategy setFieldStrategy = (new SetFieldStrategy()).addSelection(selection); + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()).addSelection(selection); Assert.assertTrue(setFieldStrategy.isToBeSet("name")); } @@ -72,7 +73,8 @@ public class SelectionTest { @Test public void testName2() { final Selection selection = new Selection("id"); - final SetFieldStrategy setFieldStrategy = (new SetFieldStrategy()).addSelection(selection); + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()).addSelection(selection); Assert.assertTrue(setFieldStrategy.isToBeSet("name")); } @@ -80,7 +82,8 @@ public class SelectionTest { @Test public void testName3() { final Selection selection = new Selection("value"); - final SetFieldStrategy setFieldStrategy = (new SetFieldStrategy()).addSelection(selection); + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()).addSelection(selection); Assert.assertTrue(setFieldStrategy.isToBeSet("name")); } @@ -88,7 +91,8 @@ public class SelectionTest { @Test public void testName4() { final Selection selection = new Selection("description"); - final SetFieldStrategy setFieldStrategy = (new SetFieldStrategy()).addSelection(selection); + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()).addSelection(selection); Assert.assertTrue(setFieldStrategy.isToBeSet("name")); } @@ -96,7 +100,8 @@ public class SelectionTest { @Test public void testName5() { final Selection selection = new Selection("datatype"); - final SetFieldStrategy setFieldStrategy = (new SetFieldStrategy()).addSelection(selection); + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()).addSelection(selection); Assert.assertTrue(setFieldStrategy.isToBeSet("name")); } @@ -104,7 +109,8 @@ public class SelectionTest { @Test public void testName6() { final Selection selection = new Selection("datatype"); - final SetFieldStrategy setFieldStrategy = (new SetFieldStrategy()).addSelection(selection); + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()).addSelection(selection); Assert.assertTrue(setFieldStrategy.isToBeSet("name")); } @@ -112,7 +118,8 @@ public class SelectionTest { @Test public void testName7() { final Selection selection = new Selection("blabla"); - final SetFieldStrategy setFieldStrategy = (new SetFieldStrategy()).addSelection(selection); + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()).addSelection(selection); Assert.assertTrue(setFieldStrategy.isToBeSet("name")); } @@ -120,7 +127,8 @@ public class SelectionTest { @Test public void testId1() { final Selection selection = new Selection("id"); - final SetFieldStrategy setFieldStrategy = (new SetFieldStrategy()).addSelection(selection); + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()).addSelection(selection); Assert.assertTrue(setFieldStrategy.isToBeSet("id")); } @@ -128,7 +136,8 @@ public class SelectionTest { @Test public void testId2() { final Selection selection = new Selection("name"); - final SetFieldStrategy setFieldStrategy = (new SetFieldStrategy()).addSelection(selection); + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()).addSelection(selection); Assert.assertTrue(setFieldStrategy.isToBeSet("id")); } @@ -136,7 +145,8 @@ public class SelectionTest { @Test public void testId3() { final Selection selection = new Selection("description"); - final SetFieldStrategy setFieldStrategy = (new SetFieldStrategy()).addSelection(selection); + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()).addSelection(selection); Assert.assertTrue(setFieldStrategy.isToBeSet("id")); } @@ -144,7 +154,8 @@ public class SelectionTest { @Test public void testId4() { final Selection selection = new Selection("blablabla"); - final SetFieldStrategy setFieldStrategy = (new SetFieldStrategy()).addSelection(selection); + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()).addSelection(selection); Assert.assertTrue(setFieldStrategy.isToBeSet("id")); } @@ -152,7 +163,8 @@ public class SelectionTest { @Test public void testDesc1() { final Selection selection = new Selection("description"); - final SetFieldStrategy setFieldStrategy = (new SetFieldStrategy()).addSelection(selection); + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()).addSelection(selection); Assert.assertTrue(setFieldStrategy.isToBeSet("description")); } @@ -160,7 +172,8 @@ public class SelectionTest { @Test public void testDesc2() { final Selection selection = new Selection("name"); - final SetFieldStrategy setFieldStrategy = (new SetFieldStrategy()).addSelection(selection); + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()).addSelection(selection); Assert.assertFalse(setFieldStrategy.isToBeSet("description")); } @@ -168,7 +181,8 @@ public class SelectionTest { @Test public void testDesc3() { final Selection selection = new Selection("id"); - final SetFieldStrategy setFieldStrategy = (new SetFieldStrategy()).addSelection(selection); + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()).addSelection(selection); Assert.assertFalse(setFieldStrategy.isToBeSet("description")); } @@ -176,15 +190,16 @@ public class SelectionTest { @Test public void testDesc4() { final Selection selection = new Selection("blablaba"); - final SetFieldStrategy setFieldStrategy = (new SetFieldStrategy()).addSelection(selection); + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()).addSelection(selection); Assert.assertFalse(setFieldStrategy.isToBeSet("description")); } @Test public void testMulti1() { - final SetFieldStrategy setFieldStrategy = - (new SetFieldStrategy()) + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()) .addSelection(new Selection("id")) .addSelection(new Selection("name")); @@ -196,8 +211,8 @@ public class SelectionTest { @Test public void testMulti2() { - final SetFieldStrategy setFieldStrategy = - (new SetFieldStrategy()) + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()) .addSelection(new Selection("id")) .addSelection(new Selection("description")); @@ -210,8 +225,8 @@ public class SelectionTest { @Test public void testMulti3() { - final SetFieldStrategy setFieldStrategy = - (new SetFieldStrategy()) + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()) .addSelection(new Selection("datatype")) .addSelection(new Selection("description")); @@ -224,8 +239,8 @@ public class SelectionTest { @Test public void testMulti4() { - final SetFieldStrategy setFieldStrategy = - (new SetFieldStrategy()) + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()) .addSelection(new Selection("datatype")) .addSelection(new Selection("value")); @@ -238,15 +253,15 @@ public class SelectionTest { @Test public void testComposition1() { - final SetFieldStrategy setFieldStrategy = - (new SetFieldStrategy()).addSelection(new Selection("blabla")); + final SerializeFieldStrategy setFieldStrategy = + (new SerializeFieldStrategy()).addSelection(new Selection("blabla")); Assert.assertTrue(setFieldStrategy.isToBeSet("blabla")); Assert.assertTrue(setFieldStrategy.isToBeSet("id")); Assert.assertTrue(setFieldStrategy.isToBeSet("name")); Assert.assertFalse(setFieldStrategy.isToBeSet("bleb")); - final SetFieldStrategy forProperty = setFieldStrategy.forProperty("blabla"); + final SerializeFieldStrategy forProperty = setFieldStrategy.forProperty("blabla"); Assert.assertTrue(forProperty.isToBeSet("id")); Assert.assertTrue(forProperty.isToBeSet("name")); Assert.assertTrue(forProperty.isToBeSet("blub")); @@ -254,8 +269,8 @@ public class SelectionTest { @Test public void testComposition2() { - final SetFieldStrategy setFieldStrategy = - new SetFieldStrategy() + final SerializeFieldStrategy setFieldStrategy = + new SerializeFieldStrategy() .addSelection(new Selection("blabla")) .addSelection(new Selection("blabla.name")); @@ -264,7 +279,7 @@ public class SelectionTest { Assert.assertTrue(setFieldStrategy.isToBeSet("name")); Assert.assertFalse(setFieldStrategy.isToBeSet("bleb")); - final SetFieldStrategy forProperty = setFieldStrategy.forProperty("blabla"); + final SerializeFieldStrategy forProperty = setFieldStrategy.forProperty("blabla"); Assert.assertTrue(forProperty.isToBeSet("id")); Assert.assertTrue(forProperty.isToBeSet("name")); Assert.assertTrue(forProperty.isToBeSet("blub")); @@ -272,8 +287,8 @@ public class SelectionTest { @Test public void testComposition3() { - final SetFieldStrategy setFieldStrategy = - new SetFieldStrategy() + final SerializeFieldStrategy setFieldStrategy = + new SerializeFieldStrategy() .addSelection(new Selection("blabla").setSubSelection(new Selection("value"))) .addSelection(new Selection("blabla").setSubSelection(new Selection("description"))); @@ -282,7 +297,7 @@ public class SelectionTest { assertTrue(setFieldStrategy.isToBeSet("name")); assertFalse(setFieldStrategy.isToBeSet("bleb")); - final SetFieldStrategy forProperty = setFieldStrategy.forProperty("blabla"); + final SerializeFieldStrategy forProperty = setFieldStrategy.forProperty("blabla"); assertTrue(forProperty.isToBeSet("id")); assertTrue(forProperty.isToBeSet("name")); assertTrue(forProperty.isToBeSet("description")); @@ -312,7 +327,7 @@ public class SelectionTest { assertEquals(s.toString(), "property.subproperty.subsubproperty"); - SetFieldStrategy setFieldStrategy = new SetFieldStrategy().addSelection(s); + SerializeFieldStrategy setFieldStrategy = new SerializeFieldStrategy().addSelection(s); assertTrue(setFieldStrategy.isToBeSet("property")); assertFalse(setFieldStrategy.forProperty("property").isToBeSet("sadf")); // assertFalse(setFieldStrategy.forProperty("property").isToBeSet("name")); diff --git a/src/test/java/org/caosdb/server/entity/container/PropertyContainerTest.java b/src/test/java/org/caosdb/server/entity/container/PropertyContainerTest.java index 0428af146f7b4a191fa6be679e01af45aff315f2..a65d2bccb61c787ee6fed4663f97b0b84e1d98c0 100644 --- a/src/test/java/org/caosdb/server/entity/container/PropertyContainerTest.java +++ b/src/test/java/org/caosdb/server/entity/container/PropertyContainerTest.java @@ -30,7 +30,7 @@ import org.caosdb.server.entity.Entity; import org.caosdb.server.entity.Role; import org.caosdb.server.entity.wrapper.Property; import org.caosdb.server.entity.xml.PropertyToElementStrategyTest; -import org.caosdb.server.entity.xml.SetFieldStrategy; +import org.caosdb.server.entity.xml.SerializeFieldStrategy; import org.jdom2.Element; import org.junit.BeforeClass; import org.junit.Test; @@ -70,8 +70,9 @@ public class PropertyContainerTest { public void test() { PropertyContainer container = new PropertyContainer(new Entity()); Element element = new Element("Record"); - SetFieldStrategy setFieldStrategy = - new SetFieldStrategy().addSelection(PropertyToElementStrategyTest.parse("window.height")); + SerializeFieldStrategy setFieldStrategy = + new SerializeFieldStrategy() + .addSelection(PropertyToElementStrategyTest.parse("window.height")); container.addToElement(windowProperty, element, setFieldStrategy); diff --git a/src/test/java/org/caosdb/server/entity/xml/PropertyToElementStrategyTest.java b/src/test/java/org/caosdb/server/entity/xml/PropertyToElementStrategyTest.java index 436278ad640663ba42f71b824924b2f1293a5132..fa8469dba9d95b70d77dcf0428e4426ff1672548 100644 --- a/src/test/java/org/caosdb/server/entity/xml/PropertyToElementStrategyTest.java +++ b/src/test/java/org/caosdb/server/entity/xml/PropertyToElementStrategyTest.java @@ -88,7 +88,8 @@ public class PropertyToElementStrategyTest { @Test public void test() { PropertyToElementStrategy strategy = new PropertyToElementStrategy(); - SetFieldStrategy setFieldStrategy = new SetFieldStrategy().addSelection(parse("height")); + SerializeFieldStrategy setFieldStrategy = + new SerializeFieldStrategy().addSelection(parse("height")); EntityInterface property = windowProperty; ((ReferenceValue) property.getValue()).setEntity(window, true); Element element = strategy.toElement(property, setFieldStrategy);