Skip to content

Commit

Permalink
New design finished & ready for regression test
Browse files Browse the repository at this point in the history
  • Loading branch information
SoccerFive18 committed Feb 6, 2024
1 parent b9d19dd commit d4d5414
Show file tree
Hide file tree
Showing 8 changed files with 138 additions and 167 deletions.
14 changes: 2 additions & 12 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@
</excludes>
</configuration>-->
</plugin>
<plugin>
<!--<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
Expand All @@ -148,7 +148,7 @@
</goals>
</execution>
</executions>
</plugin>
</plugin>-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
Expand Down Expand Up @@ -191,15 +191,5 @@
<artifactId>snakeyaml</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.9.0</version>
</dependency>
</dependencies>
</project>
3 changes: 0 additions & 3 deletions src/module-info.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,5 @@
requires transitive org.json;
requires transitive org.apache.commons.lang3;
requires transitive org.apache.commons.codec;
// requires transitive org.apache.tika.core;
requires transitive org.yaml.snakeyaml;
requires java.validation;
requires commons.csv;
}
189 changes: 107 additions & 82 deletions src/org/opentdk/api/datastorage/DataContainer.java
Original file line number Diff line number Diff line change
Expand Up @@ -97,34 +97,6 @@ public class DataContainer implements SpecificContainer {
*/
private EContainerFormat containerFormat = EContainerFormat.TEXT;

/**
* Gets used if only the orientation is known without any present data. E.g.
* Format TREE points to XML and COLUMN to CSV. TEXT gets used by default.
*
* @param type {@link org.opentdk.api.datastorage.EHeader}
*/
public static DataContainer newContainer(EHeader type) {
return new DataContainer(type);
}

private DataContainer(EHeader type) {
switch (type) {
case COLUMN:
containerFormat = EContainerFormat.CSV;
break;
case ROW:
containerFormat = EContainerFormat.PROPERTIES;
break;
case TREE:
containerFormat = EContainerFormat.XML;
break;
default:
containerFormat = EContainerFormat.TEXT;
break;
}
instance = adaptContainer();
}

/**
* The non argument constructor get used to have an empty container instance
* without a connected file, stream or result set and without knowing the
Expand All @@ -138,6 +110,42 @@ public static DataContainer newContainer() {
private DataContainer() {
instance = adaptContainer();
}

/**
* Gets used if the exact type is known but without any present data.
* In this case no adaption process is necessary, because the format gets explicitly set.
*
* @param type {@link org.opentdk.api.datastorage.EHeader}
*/
public static DataContainer newContainer(EContainerFormat type) {
return new DataContainer(type);
}

private DataContainer(EContainerFormat type) {
containerFormat = type;
switch (type) {
case CSV:
instance = CSVDataContainer.newInstance();
break;
case PROPERTIES:
instance = PropertiesDataContainer.newInstance();
break;
case RESULTSET:
instance = RSDataContainer.newInstance();
break;
case XML:
instance = XMLDataContainer.newInstance();
break;
case JSON:
instance = JSONDataContainer.newInstance();
break;
case YAML:
instance = YAMLDataContainer.newInstance();
break;
default:
instance = TextDataContainer.newInstance();
}
}

/**
* Gets used to initialize from a source path string that gets committed to a
Expand Down Expand Up @@ -326,7 +334,7 @@ public CSVDataContainer tabInstance() {
} else if (instance instanceof RSDataContainer) {
return (RSDataContainer) instance;
} else if (instance instanceof CSVDataContainer) {
return (CSVDataContainer) instance; // default CSV (has to be checked at the end)
return (CSVDataContainer) instance;
} else {
throw new NullPointerException("TabularContainer not intialized");
}
Expand All @@ -341,7 +349,7 @@ public RSDataContainer rsInstance() {
}

public XMLDataContainer xmlInstance() {
if (instance instanceof TextDataContainer) {
if (instance instanceof XMLDataContainer) {
return (XMLDataContainer) instance;
} else {
throw new NullPointerException("XMLContainer not intialized");
Expand Down Expand Up @@ -529,6 +537,13 @@ public void setResultSet(ResultSet rs) {
resultSet = rs;
}

/**
* @return {@link #containerFormat}
*/
public EContainerFormat getContainerFormat() {
return containerFormat;
}

// --------------------------------------------------------------------
// Inherited methods that just link to the instance
// --------------------------------------------------------------------
Expand Down Expand Up @@ -581,57 +596,67 @@ public void add(String name, String value, Filter filter) {
}
}
}
//
// public void delete(String params, String attrName, String attrValue, Filter fltr) {
// checkInstance();
// if (isTabular()) {
// tabInstance().deleteValue(params);
// } else if (isTree()) {
// if(isXML()) {
// xmlInstance().delete(params, attrName, attrValue, fltr);
// } else if (isJSON()) {
// jsonInstance().delete(params, attrName, attrValue, fltr);
// } else if(isYAML()) {
// yamlInstance().delete(params, attrName, attrValue, fltr);
// }
// }
// }
//
// public String[] get(String parameterName) {
// return get(parameterName, new Filter());
// }
//
// public String[] get(String parameterName, Filter fltr) {
// String[] ret = new String[0];
// if (isTabular()) {
// ret = tabInstance().getColumn(parameterName, fltr);
// } else if (isTree()) {
// ret = treeInstance().get(parameterName, fltr);
// for (int i = 0; i < ret.length; i++) {
// ret[i] = ret[i].trim();
// }
// }
// return ret;
// }
//
// public void set(String parameterName, String value) {
// set(parameterName, value, new Filter(), false);
// }
//
// public void set(String parameterName, String value, Filter filter) {
// set(parameterName, value, filter, false);
// }
//
// public void set(String parameterName, String value, Filter fltr, boolean allOccurences) {
// if (isTabular()) {
// tabInstance().setValues(parameterName, value, fltr, allOccurences);
// } else if (isTree()) {
// if(isXML()) {
// treeInstance().xmlInstance().set(parameterName, value, fltr, allOccurences);
// } else if (instance instanceof JSONDataContainer || instance instanceof YAMLDataContainer) {
// treeInstance().jsonInstance().set(parameterName, value, fltr, allOccurences);
// }
// }
// }

public void delete(String params, String attrName, String attrValue, Filter fltr) {
checkInstance();
if (isTabular()) {
tabInstance().deleteValue(params);
} else if (isTree()) {
if(isXML()) {
xmlInstance().delete(params, attrName, attrValue, fltr);
} else if (isJSON()) {
jsonInstance().delete(params, fltr);
} else if(isYAML()) {
yamlInstance().delete(params, fltr);
}
}
}

public String[] get(String parameterName) {
return get(parameterName, new Filter());
}

public String[] get(String parameterName, Filter fltr) {
String[] ret = new String[0];
checkInstance();
if (isTabular()) {
ret = tabInstance().getColumn(parameterName, fltr);
} else if (isTree()) {
if(isXML()) {
ret = xmlInstance().get(parameterName, fltr);
} else if (isJSON()) {
ret = jsonInstance().get(parameterName, fltr);
} else if(isYAML()) {
ret = yamlInstance().get(parameterName, fltr);
}
for (int i = 0; i < ret.length; i++) {
ret[i] = ret[i].trim();
}
}
return ret;
}

public void set(String parameterName, String value) {
set(parameterName, value, new Filter(), false);
}

public void set(String parameterName, String value, Filter filter) {
set(parameterName, value, filter, false);
}

public void set(String parameterName, String value, Filter fltr, boolean allOccurences) {
checkInstance();
if (isTabular()) {
tabInstance().setValues(parameterName, value, fltr, allOccurences);
} else if (isTree()) {
if(isXML()) {
xmlInstance().set(parameterName, value, fltr);
} else if (isJSON()) {
jsonInstance().set(parameterName, value, fltr);
} else if(isYAML()) {
yamlInstance().set(parameterName, value, fltr);
}
}
}

}
20 changes: 2 additions & 18 deletions src/org/opentdk/api/datastorage/JSONDataContainer.java
Original file line number Diff line number Diff line change
Expand Up @@ -204,15 +204,7 @@ public void add(String headerName, String fieldName, String oldFieldValue, Strin
MLogger.getInstance().log(Level.INFO, "Method not used", getClass().getSimpleName(), "add");
}

public void delete(String name, String value) {
delete(name, value, new Filter());
}

public void delete(String name, String value, Filter filter) {
delete(name, "", "", new Filter());
}

public void delete(String name, String fieldName, String fieldValue, Filter filter) {
public void delete(String name, Filter filter) {
if (filter.getFilterRules().isEmpty()) {
json.remove(name);
}
Expand Down Expand Up @@ -339,12 +331,8 @@ Map<String, Object> getJsonAsMap() {
public void set(String name, String value) {
set(name, value, new Filter());
}

public void set(String name, String value, Filter filter) {
set(name, value, filter, false); // No double occurrences possible in JSONObject
}

public void set(String name, String value, Filter filter, boolean allOccurences) {
public void set(String name, String value, Filter filter) {
if (filter.getFilterRules().isEmpty()) {
Object newValue = this.getDataType(value);
json.put(name, newValue);
Expand Down Expand Up @@ -381,10 +369,6 @@ public void set(String name, String value, Filter filter, boolean allOccurences)
}
}

public void set(String name, String attributeName, String oldAttributeValue, String attributeValue, Filter filter) {
MLogger.getInstance().log(Level.WARNING, "Method not used", getClass().getSimpleName(), "set");
}

/**
* Possibility to set the content of the {@link #json} object from other containers.
*
Expand Down
24 changes: 10 additions & 14 deletions src/org/opentdk/api/datastorage/XMLDataContainer.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,16 +61,16 @@ public class XMLDataContainer implements SpecificContainer {
*/
private XMLEditor xEdit;

private String rootNode = "<root>";
private String rootNode = "root";

public static XMLDataContainer newInstance() {
return new XMLDataContainer();
}

private XMLDataContainer() {
StringBuilder sb = new StringBuilder();
sb.append("<").append(rootNode).append("/>");
xEdit = new XMLEditor(sb.toString());
// StringBuilder sb = new StringBuilder();
// sb.append("<").append(rootNode).append("/>");
xEdit = new XMLEditor(rootNode);
}

@Override
Expand Down Expand Up @@ -352,18 +352,14 @@ public void set(String name, String value) {
set(name, value, new Filter());
}

public void set(String name, String value, Filter filter) {
set(name, value, filter, false);
}

public void set(String tagName, String tagValue, Filter filter, boolean allOccurences) {
public void set(String tagName, String tagValue, Filter filter) {
for (FilterRule fltrRule : filter.getFilterRules()) {
if (fltrRule.getHeaderName().equalsIgnoreCase("XPath")) {
xEdit.checkXPath(fltrRule.getValue() + "/" + tagName, true); // Creates the hierarchy if not present
Element[] elements = (Element[]) get(tagName, filter, "elements");
for (int i = 0; i < elements.length; i++) {
xEdit.setElementValue(elements[i], tagValue);
}
xEdit.checkXPath(fltrRule.getValue() + "/" + tagName, true); // Creates the hierarchy if not present
Element[] elements = (Element[]) get(tagName, filter, "elements");
for (int i = 0; i < elements.length; i++) {
xEdit.setElementValue(elements[i], tagValue);
}
break;
}
}
Expand Down
21 changes: 2 additions & 19 deletions src/org/opentdk/api/datastorage/YAMLDataContainer.java
Original file line number Diff line number Diff line change
Expand Up @@ -142,18 +142,10 @@ public void add(String name, String fieldName, String oldFieldValue, String newF
json.add(name, fieldName, oldFieldValue, newFieldValue, filter);
}

public void delete(String name, String value) {
json.set(name, value);
}

public void delete(String name, String value, Filter filter) {
json.delete(name, value, filter);
public void delete(String name, Filter filter) {
json.delete(name, filter);
}

public void delete(String headerName, String fieldName, String fieldValue, Filter filter) {
json.delete(headerName, fieldName, fieldValue, filter);
}

public String[] get(String name) {
return json.get(name);
}
Expand All @@ -170,13 +162,4 @@ public void set(String name, String value, Filter filter) {
json.set(name, value, filter);
}

public void set(String name, String value, Filter filter, boolean allOccurences) {
json.set(name, value, filter, allOccurences);
}

public void set(String name, String attr, String value, String oldValue, Filter filter) {
json.set(name, attr, value, oldValue, filter);

}

}
Loading

0 comments on commit d4d5414

Please sign in to comment.