DescriptionTemplate refactor

This commit is contained in:
Efstratios Giannopoulos 2023-11-03 14:53:10 +02:00
parent c37530c022
commit 08caf64d02
45 changed files with 129 additions and 1378 deletions

View File

@ -7,6 +7,7 @@ import org.w3c.dom.Element;
import org.w3c.dom.Node; import org.w3c.dom.Node;
import org.w3c.dom.NodeList; import org.w3c.dom.NodeList;
import java.util.ArrayList;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
@ -76,6 +77,15 @@ public class DefinitionEntity implements XmlSerializable<DefinitionEntity> {
} }
return this; return this;
} }
public List<FieldEntity> getFieldById(String id){
List<FieldEntity> fieldEntities = new ArrayList<>();
if (id == null || id.isBlank()) return fieldEntities;
if (this.getSections() != null){
for (SectionEntity sectionEntity: this.getSections()) {
fieldEntities.addAll(sectionEntity.getFieldById(id));
}
}
return fieldEntities;
}
} }

View File

@ -199,7 +199,8 @@ public class FieldEntity implements DatabaseViewStyleDefinition, XmlSerializable
Element defaultValue = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "defaultValue"); Element defaultValue = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "defaultValue");
this.defaultValue = defaultValue.getAttribute("value"); this.defaultValue = defaultValue.getAttribute("value");
this.data = new FieldDataHelper().toFieldData(null, fieldType, dataElement); String subType = dataElement != null ? dataElement.getAttribute("type") : null;
this.data = new FieldDataHelper().create(fieldType, subType);
if (this.data != null) this.data.fromXml(dataElement); if (this.data != null) this.data.fromXml(dataElement);
this.validations = new LinkedList<>(); this.validations = new LinkedList<>();

View File

@ -8,6 +8,7 @@ import org.w3c.dom.Element;
import org.w3c.dom.Node; import org.w3c.dom.Node;
import org.w3c.dom.NodeList; import org.w3c.dom.NodeList;
import java.util.ArrayList;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
@ -190,4 +191,10 @@ public class FieldSetEntity implements DatabaseViewStyleDefinition, XmlSerializa
return this; return this;
} }
public List<FieldEntity> getFieldById(String id){
if (this.getFields() == null || id == null || id.isBlank()) return new ArrayList<>();
return this.getFields().stream().filter(x-> id.equals(x.getId())).toList();
}
} }

View File

@ -8,6 +8,7 @@ import org.w3c.dom.Element;
import org.w3c.dom.Node; import org.w3c.dom.Node;
import org.w3c.dom.NodeList; import org.w3c.dom.NodeList;
import java.util.ArrayList;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
@ -208,5 +209,19 @@ public class SectionEntity implements DatabaseViewStyleDefinition, XmlSerializab
return this; return this;
} }
public List<FieldEntity> getFieldById(String id){
List<FieldEntity> fieldEntities = new ArrayList<>();
if (id == null || id.isBlank()) return fieldEntities;
if (this.getFieldSets() != null){
for (FieldSetEntity fieldSetEntity: this.getFieldSets()) {
fieldEntities.addAll(fieldSetEntity.getFieldById(id));
}
}
if (this.getSections() != null){
for (SectionEntity sectionEntity: this.getSections()) {
fieldEntities.addAll(sectionEntity.getFieldById(id));
}
}
return fieldEntities;
}
} }

View File

@ -231,144 +231,6 @@ public class AutoCompleteDataEntity extends ComboBoxDataEntity<AutoCompleteDataE
} }
} }
} }
@Override
public AutoCompleteDataEntity fromData(Object data) {
super.fromData(data);
this.autoCompleteSingleDataList = new ArrayList<>();
if (data != null) {
this.multiAutoComplete = (Boolean) ((Map<Boolean, Object>) data).get("multiAutoComplete");
List<Map<String, Object>> dataList = (List<Map<String, Object>>) ((Map<String, Object>) data).get("autocompleteSingle");
if (dataList == null) {
dataList = (List<Map<String, Object>>) ((Map<String, Object>) data).get("autoCompleteSingleDataList");
}
this.autoCompleteSingleDataList = new ArrayList<>();
int i = 0;
for (Map<String, Object> singleData: dataList) {
this.autoCompleteSingleDataList.add(new AutoCompleteSingleData());
this.autoCompleteSingleDataList.get(i).autoCompleteOptions = new Option();
this.autoCompleteSingleDataList.get(i).url = (String) singleData.get("url");
this.autoCompleteSingleDataList.get(i).optionsRoot = (String) singleData.get("optionsRoot");
this.autoCompleteSingleDataList.get(i).hasAuth = (Boolean) singleData.get("hasAuth");
this.autoCompleteSingleDataList.get(i).method = singleData.containsKey("method") ? (String) singleData.get("method") : "GET";
if (singleData.get("autoCompleteType") == null) {
this.autoCompleteSingleDataList.get(i).autocompleteType = AutocompleteType.UNCACHED;
} else {
this.autoCompleteSingleDataList.get(i).autocompleteType = AutocompleteType.of((Integer) singleData.get("autoCompleteType"));
}
Map<String, String> options = (Map<String, String>) singleData.get("autoCompleteOptions");
if (options != null) {
this.autoCompleteSingleDataList.get(i).autoCompleteOptions.setLabel(options.get("label"));
this.autoCompleteSingleDataList.get(i).autoCompleteOptions.setValue(options.get("value"));
this.autoCompleteSingleDataList.get(i).autoCompleteOptions.setSource(options.get("source"));
this.autoCompleteSingleDataList.get(i).autoCompleteOptions.setUri(options.get("uri"));
}
if (this.autoCompleteSingleDataList.get(i).hasAuth) {
Map<String, String> auth = (Map<String, String>) singleData.get("auth");
if (auth != null) {
this.autoCompleteSingleDataList.get(i).auth = new AuthAutoCompleteData();
this.autoCompleteSingleDataList.get(i).auth.setUrl(auth.get("url"));
this.autoCompleteSingleDataList.get(i).auth.setType(auth.get("type"));
this.autoCompleteSingleDataList.get(i).auth.setPath(auth.get("path"));
this.autoCompleteSingleDataList.get(i).auth.setBody(auth.get("body"));
this.autoCompleteSingleDataList.get(i).auth.setMethod(auth.get("method"));
}
}
i++;
}
}
return this;
}
@Override
public Object toData() {
// TODO Auto-generated method stub
return null;
}
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null ? item.getAttribute("label") : "");
//dataMap.put("url", item != null ? item.getAttribute("url") : "");
dataMap.put("type", item != null ? item.getAttribute("type") : "autocomplete");
dataMap.put("multiAutoComplete", item != null ? Boolean.valueOf(item.getAttribute("multiAutoComplete")) : false);
List<Map<String, Object>> autoCompletes = new ArrayList<>();
NodeList autoCompleteSingles = item.getChildNodes();
for (int i = 0; i < autoCompleteSingles.getLength(); i++) {
if (autoCompleteSingles.item(i) instanceof Element) {
if (!((Element) autoCompleteSingles.item(i)).getTagName().equals("option")) {
Element node = (Element) autoCompleteSingles.item(i);
if (!node.hasChildNodes()) {
node.appendChild(node);
}
autoCompletes.add(singleToMap(node));
} else {
Element node = item.getOwnerDocument().createElement("autocompleteSingle");
node.appendChild(autoCompleteSingles.item(i));
node.setAttribute("url", item.getAttribute("url"));
node.setAttribute("optionsRoot", item.getAttribute("optionsRoot"));
node.setAttribute("hasAuth", item.getAttribute("hasAuth"));
node.setAttribute("method", item.hasAttribute("method") ? item.getAttribute("method") : "GET");
autoCompletes.add(singleToMap(node));
}
}
}
dataMap.put("autocompleteSingle", autoCompletes);
//dataMap.put("optionsRoot", item != null ? item.getAttribute("optionsRoot") : "");
//Element optionElement = (Element) item.getElementsByTagName("option").item(0);
// if (optionElement != null) {
// this.autoCompleteOptions = new Option();
// this.autoCompleteOptions.setLabel(optionElement.getAttribute("label"));
// this.autoCompleteOptions.setValue(optionElement.getAttribute("value"));
// }
// dataMap.put("autoCompleteOptions", item != null ? optionToMap(optionElement) : null);
return dataMap;
}
private Map<String, Object> optionToMap(Element item){
HashMap dataMap = new HashMap();
dataMap.put("label", item != null ? item.getAttribute("label") : "");
dataMap.put("value", item != null ? item.getAttribute("value") : "");
dataMap.put("source", item != null ? item.getAttribute("source") : "");
return dataMap;
}
private Map<String, Object> authToMap(Element item){
HashMap dataMap = new HashMap();
dataMap.put("url", item != null ? item.getAttribute("url") : "");
dataMap.put("method", item != null ? item.getAttribute("method") : "");
dataMap.put("body", item != null ? item.getAttribute("body") : "");
dataMap.put("path", item != null ? item.getAttribute("path") : "");
dataMap.put("type", item != null ? item.getAttribute("type") : "");
return dataMap;
}
private Map<String, Object> singleToMap(Element item) {
Map<String, Object> dataMap = new HashMap<>();
if (!item.getAttribute("autoCompleteType").isEmpty()) {
dataMap.put("autoCompleteType", Integer.parseInt(item.getAttribute("autoCompleteType")));
}
dataMap.put("optionsRoot", item != null ? item.getAttribute("optionsRoot") : "");
dataMap.put("url", item != null ? item.getAttribute("url") : "");
dataMap.put("hasAuth", item != null ? item.getAttribute("hasAuth") : "false");
Element optionElement = (Element) item.getElementsByTagName("option").item(0);
dataMap.put("autoCompleteOptions", item != null ? optionToMap(optionElement) : null);
Element authElement = (Element) item.getElementsByTagName("auth").item(0);
dataMap.put("auth", item != null ? authToMap(authElement) : null);
dataMap.put("method", item != null && item.hasAttribute("method") ? item.getAttribute("method") : "GET");
return dataMap;
}
public enum AutocompleteType implements DatabaseEnum<Integer> { public enum AutocompleteType implements DatabaseEnum<Integer> {
UNCACHED(0), UNCACHED(0),
CACHED(1); CACHED(1);

View File

@ -20,16 +20,6 @@ public abstract class BaseFieldDataEntity<T> implements XmlSerializable<T> {
this.label = label; this.label = label;
} }
public T fromData(Object data) {
return null;
}
public Object toData() {
return null;
}
public Element toXml(Document doc) { public Element toXml(Document doc) {
Element root = doc.createElement("data"); Element root = doc.createElement("data");
root.setAttribute("label", this.getLabel()); root.setAttribute("label", this.getLabel());
@ -41,6 +31,4 @@ public abstract class BaseFieldDataEntity<T> implements XmlSerializable<T> {
this.setLabel(item.getAttribute("label")); this.setLabel(item.getAttribute("label"));
return (T) this; return (T) this;
} }
public abstract Map<String, Object> toMap(Element item);
} }

View File

@ -13,26 +13,4 @@ public class BooleanDecisionDataEntity extends BaseFieldDataEntity<BooleanDecisi
public FieldType getFieldType() { public FieldType getFieldType() {
return FieldType.BOOLEAN_DECISION; return FieldType.BOOLEAN_DECISION;
} }
@Override
public BooleanDecisionDataEntity fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null ? item.getAttribute("label") : "");
return dataMap;
}
} }

View File

@ -13,25 +13,4 @@ public class CheckBoxDataEntity extends BaseFieldDataEntity<CheckBoxDataEntity>
public FieldType getFieldType() { public FieldType getFieldType() {
return FieldType.CHECK_BOX; return FieldType.CHECK_BOX;
} }
@Override
public CheckBoxDataEntity fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
}
return this;
}
@Override
public Object toData() {
// TODO Auto-generated method stub
return null;
}
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null ? item.getAttribute("label") : "");
return dataMap;
}
} }

View File

@ -80,28 +80,4 @@ public abstract class ComboBoxDataEntity<T> extends BaseFieldDataEntity<T> {
super.fromXml(item); super.fromXml(item);
return (T) this; return (T) this;
} }
@Override
public T fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
}
return (T) this;
}
@Override
public Object toData() {
// TODO Auto-generated method stub
return null;
}
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null ? item.getAttribute("label") : "");
dataMap.put("type", item != null ? item.getAttribute("type") : "");
return dataMap;
}
} }

View File

@ -12,24 +12,4 @@ public class CurrencyDataEntity extends BaseFieldDataEntity<CurrencyDataEntity>
public FieldType getFieldType() { public FieldType getFieldType() {
return FieldType.CURRENCY; return FieldType.CURRENCY;
} }
@Override
public CurrencyDataEntity fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null ? item.getAttribute("label") : "");
return dataMap;
}
} }

View File

@ -23,20 +23,6 @@ public class DataRepositoryDataEntity extends BaseFieldDataEntity<DataRepository
this.multiAutoComplete = multiAutoComplete; this.multiAutoComplete = multiAutoComplete;
} }
@Override
public DataRepositoryDataEntity fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
this.setMultiAutoComplete(((Map<String, Object>) data).get("multiAutoComplete") != null && !((Map<String, Object>) data).get("multiAutoComplete").toString().isEmpty()? Boolean.parseBoolean(((Map<String, Object>) data).get("multiAutoComplete").toString()) : false);
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override @Override
public Element toXml(Document doc) { public Element toXml(Document doc) {
Element root = super.toXml(doc); Element root = super.toXml(doc);
@ -52,12 +38,4 @@ public class DataRepositoryDataEntity extends BaseFieldDataEntity<DataRepository
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete"))); this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
return this; return this;
} }
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null && item.getAttributes().getLength() > 0? item.getAttribute("label") : "");
dataMap.put("multiAutoComplete", item != null && item.getAttributes().getLength() > 0 ? item.getAttribute("multiAutocomplete") : false);
return dataMap;
}
} }

View File

@ -44,30 +44,4 @@ public class DatasetAutoCompleteDataEntity extends InternalDmpBaseDataEntity<Dat
return this; return this;
} }
@Override
public DatasetAutoCompleteDataEntity fromData(Object data) {
super.fromData(data);
if (data != null) {
this.multiAutoComplete = (Boolean) ((Map<Boolean, Object>) data).get("multiAutoComplete");
}
return this;
}
@Override
public Object toData() {
// TODO Auto-generated method stub
return null;
}
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null ? item.getAttribute("label") : "");
dataMap.put("type", item != null ? item.getAttribute("type") : "datasets");
dataMap.put("multiAutoComplete", item != null ? Boolean.parseBoolean(item.getAttribute("multiAutocomplete")) : false);
return dataMap;
}
} }

View File

@ -12,23 +12,4 @@ public class DatasetIdentifierDataEntity extends BaseFieldDataEntity<DatasetIden
public FieldType getFieldType() { public FieldType getFieldType() {
return FieldType.DATASET_IDENTIFIER; return FieldType.DATASET_IDENTIFIER;
} }
@Override
public DatasetIdentifierDataEntity fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null ? item.getAttribute("label") : "");
return dataMap;
}
} }

View File

@ -12,23 +12,4 @@ public class DatePickerDataEntity extends BaseFieldDataEntity<DatePickerDataEnti
public FieldType getFieldType() { public FieldType getFieldType() {
return FieldType.DATE_PICKER; return FieldType.DATE_PICKER;
} }
@Override
public DatePickerDataEntity fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null ? item.getAttribute("label") : "");
return dataMap;
}
} }

View File

@ -42,30 +42,4 @@ public class DmpAutoCompleteDataEntity extends InternalDmpBaseDataEntity<DmpAuto
return this; return this;
} }
@Override
public DmpAutoCompleteDataEntity fromData(Object data) {
super.fromData(data);
if (data != null) {
this.multiAutoComplete = (Boolean) ((Map<Boolean, Object>) data).get("multiAutoComplete");
}
return this;
}
@Override
public Object toData() {
// TODO Auto-generated method stub
return null;
}
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null ? item.getAttribute("label") : "");
dataMap.put("type", item != null ? item.getAttribute("type") : "dmps");
dataMap.put("multiAutoComplete", item != null ? Boolean.parseBoolean(item.getAttribute("multiAutocomplete")) : false);
return dataMap;
}
} }

View File

@ -32,21 +32,6 @@ public class ExternalDatasetDataEntity extends BaseFieldDataEntity<ExternalDatas
this.type = type; this.type = type;
} }
@Override
public ExternalDatasetDataEntity fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
this.setMultiAutoComplete(((Map<String, Object>) data).get("multiAutoComplete") != null && !((Map<String, Object>) data).get("multiAutoComplete").toString().isEmpty()? Boolean.parseBoolean( ((Map<String, Object>) data).get("multiAutoComplete").toString()) : false);
this.setType(((Map<String, Object>) data).get("type") != null && !((Map<String, Object>) data).get("type").toString().isEmpty()? FieldDataExternalDatasetType.of(((Map<String, Object>) data).get("type").toString()) : FieldDataExternalDatasetType.Other);
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override @Override
public Element toXml(Document doc) { public Element toXml(Document doc) {
Element root = doc.createElement("data"); Element root = doc.createElement("data");
@ -67,13 +52,4 @@ public class ExternalDatasetDataEntity extends BaseFieldDataEntity<ExternalDatas
this.setType(item.getAttribute("type") != null ? FieldDataExternalDatasetType.of(item.getAttribute("type")): FieldDataExternalDatasetType.Other); this.setType(item.getAttribute("type") != null ? FieldDataExternalDatasetType.of(item.getAttribute("type")): FieldDataExternalDatasetType.Other);
return this; return this;
} }
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null && item.getAttributes().getLength() > 0? item.getAttribute("label") : "");
dataMap.put("multiAutoComplete", item != null && item.getAttributes().getLength() > 0? Boolean.parseBoolean(item.getAttribute("multiAutocomplete")) : false);
dataMap.put("type", item != null && item.getAttributes().getLength() > 0? item.getAttribute("type") : "other");
return dataMap;
}
} }

View File

@ -66,19 +66,4 @@ public class FieldDataHelper {
return null; return null;
} }
public BaseFieldDataEntity<?> toFieldData(Object data, FieldType type, Element dataElement) {
String subType = dataElement != null ? dataElement.getAttribute("type") : null;
BaseFieldDataEntity<?> baseFieldData = this.create(type, subType);
if (baseFieldData == null) return baseFieldData;
return (BaseFieldDataEntity<?>) baseFieldData.fromData(data);
}
public BaseFieldDataEntity<?> toFieldData(Object data, FieldType type) {
Map<String, Object> dataAsMap = (Map<String, Object>) data;
String subType = dataAsMap != null ? (String) dataAsMap.getOrDefault("type", null) : null;
BaseFieldDataEntity<?> baseFieldData = this.create(type, subType);
if (baseFieldData == null) return baseFieldData;
return (BaseFieldDataEntity<?>) baseFieldData.fromData(data);
}
} }

View File

@ -13,24 +13,4 @@ public class FreeTextDataEntity extends BaseFieldDataEntity<FreeTextDataEntity>
public FieldType getFieldType() { public FieldType getFieldType() {
return FieldType.FREE_TEXT; return FieldType.FREE_TEXT;
} }
@Override
public FreeTextDataEntity fromData(Object data) {
if (data != null) {
this.setLabel(((Map<String, String>) data).get("label"));
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null ? item.getAttribute("label") : "");
return dataMap;
}
} }

View File

@ -23,29 +23,4 @@ public abstract class InternalDmpBaseDataEntity<T> extends BaseFieldDataEntity<T
super.fromXml(item); super.fromXml(item);
return (T) this; return (T) this;
} }
@Override
public T fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
}
return (T) this;
}
@Override
public Object toData() {
// TODO Auto-generated method stub
return null;
}
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null ? item.getAttribute("label") : "");
dataMap.put("type", item != null ? item.getAttribute("type") : "");
dataMap.put("type", item != null ? item.getAttribute("type") : "researchers");
return dataMap;
}
} }

View File

@ -23,20 +23,6 @@ public class JournalRepositoryDataEntity extends BaseFieldDataEntity<JournalRepo
this.multiAutoComplete = multiAutoComplete; this.multiAutoComplete = multiAutoComplete;
} }
@Override
public JournalRepositoryDataEntity fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
this.setMultiAutoComplete(((Map<String, Object>) data).get("multiAutoComplete") != null && !((Map<String, Object>) data).get("multiAutoComplete").toString().isEmpty()? Boolean.parseBoolean(((Map<String, Object>) data).get("multiAutoComplete").toString()) : false);
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override @Override
public Element toXml(Document doc) { public Element toXml(Document doc) {
Element root = super.toXml(doc); Element root = super.toXml(doc);
@ -52,12 +38,4 @@ public class JournalRepositoryDataEntity extends BaseFieldDataEntity<JournalRepo
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete"))); this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
return this; return this;
} }
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null && item.getAttributes().getLength() > 0? item.getAttribute("label") : "");
dataMap.put("multiAutoComplete", item != null && item.getAttributes().getLength() > 0 ? item.getAttribute("multiAutocomplete") : false);
return dataMap;
}
} }

View File

@ -22,20 +22,6 @@ public class LicenseDataEntity extends BaseFieldDataEntity<LicenseDataEntity> {
this.multiAutoComplete = multiAutoComplete; this.multiAutoComplete = multiAutoComplete;
} }
@Override
public LicenseDataEntity fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
this.setMultiAutoComplete(((Map<String, Object>) data).get("multiAutoComplete") != null && !((Map<String, Object>) data).get("multiAutoComplete").toString().isEmpty()? Boolean.parseBoolean(((Map<String, Object>) data).get("multiAutoComplete").toString()) : false);
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override @Override
public Element toXml(Document doc) { public Element toXml(Document doc) {
Element root = super.toXml(doc); Element root = super.toXml(doc);
@ -51,12 +37,4 @@ public class LicenseDataEntity extends BaseFieldDataEntity<LicenseDataEntity> {
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete"))); this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
return this; return this;
} }
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null && item.getAttributes().getLength() > 0? item.getAttribute("label") : "");
dataMap.put("multiAutoComplete", item != null && item.getAttributes().getLength() > 0 ? item.getAttribute("multiAutocomplete") : false);
return dataMap;
}
} }

View File

@ -22,20 +22,6 @@ public class OrganizationDataEntity extends BaseFieldDataEntity<OrganizationData
this.multiAutoComplete = multiAutoComplete; this.multiAutoComplete = multiAutoComplete;
} }
@Override
public OrganizationDataEntity fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
this.setMultiAutoComplete(((Map<String, Object>) data).get("multiAutoComplete") != null && !((Map<String, Object>) data).get("multiAutoComplete").toString().isEmpty()? Boolean.parseBoolean( ((Map<String, Object>) data).get("multiAutoComplete").toString()) : false);
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override @Override
public Element toXml(Document doc) { public Element toXml(Document doc) {
Element root = super.toXml(doc); Element root = super.toXml(doc);
@ -51,12 +37,4 @@ public class OrganizationDataEntity extends BaseFieldDataEntity<OrganizationData
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete"))); this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
return this; return this;
} }
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null && item.getAttributes().getLength() > 0? item.getAttribute("label") : "");
dataMap.put("multiAutoComplete", item != null && item.getAttributes().getLength() > 0? Boolean.parseBoolean(item.getAttribute("multiAutocomplete")) : false);
return dataMap;
}
} }

View File

@ -21,21 +21,6 @@ public class PublicationDataEntity extends BaseFieldDataEntity<PublicationDataEn
public void setMultiAutoComplete(Boolean multiAutoComplete) { public void setMultiAutoComplete(Boolean multiAutoComplete) {
this.multiAutoComplete = multiAutoComplete; this.multiAutoComplete = multiAutoComplete;
} }
@Override
public PublicationDataEntity fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
this.setMultiAutoComplete(((Map<String, Object>) data).get("multiAutoComplete") != null && !((Map<String, Object>) data).get("multiAutoComplete").toString().isEmpty()? Boolean.parseBoolean(((Map<String, Object>) data).get("multiAutoComplete").toString()) : false);
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override @Override
public Element toXml(Document doc) { public Element toXml(Document doc) {
Element root = super.toXml(doc); Element root = super.toXml(doc);
@ -51,12 +36,4 @@ public class PublicationDataEntity extends BaseFieldDataEntity<PublicationDataEn
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete"))); this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
return this; return this;
} }
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null && item.getAttributes().getLength() > 0? item.getAttribute("label") : "");
dataMap.put("multiAutoComplete", item != null && item.getAttributes().getLength() > 0 ? item.getAttribute("multiAutocomplete") : false);
return dataMap;
}
} }

View File

@ -23,20 +23,6 @@ public class PublicationRepositoryDataEntity extends BaseFieldDataEntity<Publica
this.multiAutoComplete = multiAutoComplete; this.multiAutoComplete = multiAutoComplete;
} }
@Override
public PublicationRepositoryDataEntity fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
this.setMultiAutoComplete(((Map<String, Object>) data).get("multiAutoComplete") != null && !((Map<String, Object>) data).get("multiAutoComplete").toString().isEmpty()? Boolean.parseBoolean(((Map<String, Object>) data).get("multiAutoComplete").toString()) : false);
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override @Override
public Element toXml(Document doc) { public Element toXml(Document doc) {
Element root = super.toXml(doc); Element root = super.toXml(doc);
@ -52,12 +38,4 @@ public class PublicationRepositoryDataEntity extends BaseFieldDataEntity<Publica
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete"))); this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
return this; return this;
} }
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null && item.getAttributes().getLength() > 0? item.getAttribute("label") : "");
dataMap.put("multiAutoComplete", item != null && item.getAttributes().getLength() > 0 ? item.getAttribute("multiAutocomplete") : false);
return dataMap;
}
} }

View File

@ -65,28 +65,6 @@ public class RadioBoxDataEntity extends BaseFieldDataEntity<RadioBoxDataEntity>
this.options = options; this.options = options;
} }
@Override
public RadioBoxDataEntity fromData(Object data) {
this.options = new LinkedList();
if (data != null) {
List<Map<String, String>> options = ((Map<String, List<Map<String, String>>>) data).get("options");
for (Map<String, String> map : options) {
Option newOption = new Option();
newOption.setLabel(map.get("label"));
newOption.setValue(map.get("value"));
this.options.add(newOption);
}
this.setLabel(((Map<String, String>) data).get("label"));
}
return this;
}
@Override
public Object toData() {
// TODO Auto-generated method stub
return null;
}
@Override @Override
public Element toXml(Document doc) { public Element toXml(Document doc) {
Element root = super.toXml(doc); Element root = super.toXml(doc);
@ -114,34 +92,4 @@ public class RadioBoxDataEntity extends BaseFieldDataEntity<RadioBoxDataEntity>
} }
return this; return this;
} }
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null ? item.getAttribute("label") : "");
Element optionsElement = (Element) item.getElementsByTagName("options").item(0);
List<Map<String,String>> option =new LinkedList<>();
if (optionsElement != null) {
NodeList optionElements = optionsElement.getChildNodes();
for (int temp = 0; temp < optionElements.getLength(); temp++) {
Node optionElement = optionElements.item(temp);
if (optionElement.getNodeType() == Node.ELEMENT_NODE) {
option.add(optionToMap((Element) optionElement));
}
}
}
dataMap.put("options", option != null ? option : null);
return dataMap;
}
private Map<String, String> optionToMap(Element item){
HashMap dataMap = new HashMap();
dataMap.put("label",item.getAttribute("label"));
dataMap.put("value",item.getAttribute("value"));
return dataMap;
}
} }

View File

@ -21,21 +21,6 @@ public class RegistryDataEntity extends BaseFieldDataEntity<RegistryDataEntity>
public void setMultiAutoComplete(Boolean multiAutoComplete) { public void setMultiAutoComplete(Boolean multiAutoComplete) {
this.multiAutoComplete = multiAutoComplete; this.multiAutoComplete = multiAutoComplete;
} }
@Override
public RegistryDataEntity fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
this.setMultiAutoComplete(((Map<String, Object>) data).get("multiAutoComplete") != null && !((Map<String, Object>) data).get("multiAutoComplete").toString().isEmpty()?Boolean.parseBoolean( ((Map<String, Object>) data).get("multiAutoComplete").toString()): false);
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override @Override
public Element toXml(Document doc) { public Element toXml(Document doc) {
Element root = super.toXml(doc); Element root = super.toXml(doc);
@ -51,12 +36,4 @@ public class RegistryDataEntity extends BaseFieldDataEntity<RegistryDataEntity>
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete"))); this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
return this; return this;
} }
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null && item.getAttributes().getLength() > 0? item.getAttribute("label") : "");
dataMap.put("multiAutoComplete", item != null && item.getAttributes().getLength() > 0? Boolean.parseBoolean(item.getAttribute("multiAutocomplete")) : false);
return dataMap;
}
} }

View File

@ -43,29 +43,4 @@ public class ResearcherAutoCompleteDataEntity extends InternalDmpBaseDataEntity<
return this; return this;
} }
@Override
public ResearcherAutoCompleteDataEntity fromData(Object data) {
super.fromData(data);
if (data != null) {
this.multiAutoComplete = Boolean.parseBoolean(((Map<Boolean, Object>) data).get("multiAutoComplete").toString());
}
return this;
}
@Override
public Object toData() {
// TODO Auto-generated method stub
return null;
}
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null ? item.getAttribute("label") : "");
dataMap.put("type", item != null ? item.getAttribute("type") : "researchers");
dataMap.put("multiAutoComplete", item != null ? Boolean.parseBoolean(item.getAttribute("multiAutocomplete")) : false);
return dataMap;
}
} }

View File

@ -22,20 +22,6 @@ public class ResearcherDataEntity extends BaseFieldDataEntity<ResearcherDataEnti
this.multiAutoComplete = multiAutoComplete; this.multiAutoComplete = multiAutoComplete;
} }
@Override
public ResearcherDataEntity fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
this.setMultiAutoComplete(((Map<String, Object>) data).get("multiAutoComplete") != null && !((Map<String, Object>) data).get("multiAutoComplete").toString().isEmpty()? Boolean.parseBoolean( ((Map<String, Object>) data).get("multiAutoComplete").toString()) : false);
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override @Override
public Element toXml(Document doc) { public Element toXml(Document doc) {
Element root = super.toXml(doc); Element root = super.toXml(doc);
@ -51,12 +37,4 @@ public class ResearcherDataEntity extends BaseFieldDataEntity<ResearcherDataEnti
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete"))); this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
return this; return this;
} }
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null && item.getAttributes().getLength() > 0 ? item.getAttribute("label") : "");
dataMap.put("multiAutoComplete", item != null && item.getAttributes().getLength() > 0 ? Boolean.parseBoolean(item.getAttribute("multiAutocomplete")) : false);
return dataMap;
}
} }

View File

@ -13,23 +13,4 @@ public class RichTextAreaDataEntity extends BaseFieldDataEntity<RichTextAreaData
public FieldType getFieldType() { public FieldType getFieldType() {
return FieldType.RICH_TEXT_AREA; return FieldType.RICH_TEXT_AREA;
} }
@Override
public RichTextAreaDataEntity fromData(Object data) {
if (data != null) {
this.setLabel(((Map<String, String>) data).get("label"));
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null ? item.getAttribute("label") : "");
return dataMap;
}
} }

View File

@ -22,20 +22,6 @@ public class ServiceDataEntity extends BaseFieldDataEntity<ServiceDataEntity> {
this.multiAutoComplete = multiAutoComplete; this.multiAutoComplete = multiAutoComplete;
} }
@Override
public ServiceDataEntity fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
this.setMultiAutoComplete(((Map<String, Object>) data).get("multiAutoComplete") != null && !((Map<String, Object>) data).get("multiAutoComplete").toString().isEmpty()? Boolean.parseBoolean( ((Map<String, Object>) data).get("multiAutoComplete").toString()) : false);
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override @Override
public Element toXml(Document doc) { public Element toXml(Document doc) {
Element root = super.toXml(doc); Element root = super.toXml(doc);
@ -51,12 +37,4 @@ public class ServiceDataEntity extends BaseFieldDataEntity<ServiceDataEntity> {
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete"))); this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
return this; return this;
} }
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null && item.getAttributes().getLength() > 0? item.getAttribute("label") : "");
dataMap.put("multiAutoComplete", item != null && item.getAttributes().getLength() > 0? Boolean.parseBoolean(item.getAttribute("multiAutocomplete")) : false);
return dataMap;
}
} }

View File

@ -12,24 +12,4 @@ public class TagDataEntity extends BaseFieldDataEntity<TagDataEntity> {
public FieldType getFieldType() { public FieldType getFieldType() {
return FieldType.TAGS; return FieldType.TAGS;
} }
@Override
public TagDataEntity fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null ? item.getAttribute("label") : "");
return dataMap;
}
} }

View File

@ -22,20 +22,6 @@ public class TaxonomyDataEntity extends BaseFieldDataEntity<TaxonomyDataEntity>
this.multiAutoComplete = multiAutoComplete; this.multiAutoComplete = multiAutoComplete;
} }
@Override
public TaxonomyDataEntity fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
this.setMultiAutoComplete(((Map<String, Object>) data).get("multiAutoComplete") != null && !((Map<String, Object>) data).get("multiAutoComplete").toString().isEmpty()? Boolean.parseBoolean(((Map<String, Object>) data).get("multiAutoComplete").toString()) : false);
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override @Override
public Element toXml(Document doc) { public Element toXml(Document doc) {
Element root = super.toXml(doc); Element root = super.toXml(doc);
@ -51,12 +37,4 @@ public class TaxonomyDataEntity extends BaseFieldDataEntity<TaxonomyDataEntity>
this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete"))); this.setMultiAutoComplete(Boolean.parseBoolean(item.getAttribute("multiAutoComplete")));
return this; return this;
} }
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null && item.getAttributes().getLength() > 0? item.getAttribute("label") : "");
dataMap.put("multiAutoComplete", item != null && item.getAttributes().getLength() > 0 ? item.getAttribute("multiAutocomplete") : false);
return dataMap;
}
} }

View File

@ -13,25 +13,4 @@ public class TextAreaDataEntity extends BaseFieldDataEntity<TextAreaDataEntity>
public FieldType getFieldType() { public FieldType getFieldType() {
return FieldType.TEXT_AREA; return FieldType.TEXT_AREA;
} }
@Override
public TextAreaDataEntity fromData(Object data) {
if (data != null) {
this.setLabel(((Map<String, String>) data).get("label"));
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null ? item.getAttribute("label") : "");
return dataMap;
}
} }

View File

@ -76,35 +76,6 @@ public class UploadDataEntity extends BaseFieldDataEntity<UploadDataEntity> {
this.maxFileSizeInMB = maxFileSizeInMB; this.maxFileSizeInMB = maxFileSizeInMB;
} }
@Override
public UploadDataEntity fromData(Object data) {
this.types = new LinkedList();
if (data != null) {
List<Map<String, String>> types = ((Map<String, List<Map<String, String>>>) data).get("types");
for (Map<String, String> map : types) {
UploadDataEntity.Option newOption = new Option();
newOption.setLabel(map.get("label"));
newOption.setValue(map.get("value"));
this.types.add(newOption);
}
this.setLabel(((Map<String, String>) data).get("label"));
Object maxFileSizeInMB = ((Map<String, Object>) data).get("maxFileSizeInMB");
if(maxFileSizeInMB instanceof String){ // template export
if(!((String)maxFileSizeInMB).isEmpty())
this.setMaxFileSizeInMB(Integer.valueOf((String)maxFileSizeInMB));
}
else if(maxFileSizeInMB instanceof Integer){ // template preview
this.setMaxFileSizeInMB((Integer)maxFileSizeInMB);
}
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override @Override
public Element toXml(Document doc) { public Element toXml(Document doc) {
Element root = super.toXml(doc); Element root = super.toXml(doc);
@ -136,34 +107,4 @@ public class UploadDataEntity extends BaseFieldDataEntity<UploadDataEntity> {
} }
return this; return this;
} }
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null ? item.getAttribute("label") : "");
dataMap.put("maxFileSizeInMB", item != null ? item.getAttribute("maxFileSizeInMB") : "");
Element optionsElement = (Element) item.getElementsByTagName("types").item(0);
List<Map<String,String>> type =new LinkedList<>();
if (optionsElement != null) {
NodeList optionElements = optionsElement.getChildNodes();
for (int temp = 0; temp < optionElements.getLength(); temp++) {
Node optionElement = optionElements.item(temp);
if (optionElement.getNodeType() == Node.ELEMENT_NODE) {
type.add(optionToMap((Element) optionElement));
}
}
}
dataMap.put("types", type != null ? type : null);
return dataMap;
}
private Map<String, String> optionToMap(Element item){
HashMap dataMap = new HashMap();
dataMap.put("label",item.getAttribute("label"));
dataMap.put("value",item.getAttribute("value"));
return dataMap;
}
} }

View File

@ -12,24 +12,4 @@ public class ValidationDataEntity extends BaseFieldDataEntity<ValidationDataEnti
public FieldType getFieldType() { public FieldType getFieldType() {
return FieldType.VALIDATION; return FieldType.VALIDATION;
} }
@Override
public ValidationDataEntity fromData(Object data) {
if (data != null) {
this.setLabel((String) ((Map<String, Object>) data).get("label"));
}
return this;
}
@Override
public Object toData() {
return null;
}
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("label", item != null ? item.getAttribute("label") : "");
return dataMap;
}
} }

View File

@ -76,61 +76,4 @@ public class WordListDataEntity extends ComboBoxDataEntity<WordListDataEntity> {
this.multiList = temp != null ? temp : false; this.multiList = temp != null ? temp : false;
return this; return this;
} }
@Override
public WordListDataEntity fromData(Object data) {
super.fromData(data);
this.options = new LinkedList();
if (data != null) {
List<Map<String, String>> options = ((Map<String, List<Map<String, String>>>) data).get("options");
if (options != null) {
for (Map<String, String> map : options) {
Option newOption = new Option();
newOption.setLabel(map.get("label"));
newOption.setValue(map.get("value"));
this.options.add(newOption);
}
}
Object multiList1 = ((Map<String, Object>) data).get("multiList");
this.multiList = multiList1 != null && (multiList1 instanceof String ? Boolean.parseBoolean((String) multiList1) : (Boolean) multiList1);
}
return this;
}
@Override
public Object toData() {
// TODO Auto-generated method stub
return null;
}
@Override
public Map<String, Object> toMap(Element item) {
HashMap dataMap = new HashMap();
dataMap.put("multiList", item != null ? item.getAttribute("multiList") : "false");
dataMap.put("label", item != null ? item.getAttribute("label") : "");
dataMap.put("type", item != null ? item.getAttribute("type") : "wordlist");
Element optionsElement = (Element) item.getElementsByTagName("options").item(0);
List<Map<String,String>> option =new LinkedList<>();
if (optionsElement != null) {
NodeList optionElements = optionsElement.getChildNodes();
for (int temp = 0; temp < optionElements.getLength(); temp++) {
Node optionElement = optionElements.item(temp);
if (optionElement.getNodeType() == Node.ELEMENT_NODE) {
option.add(optionToMap((Element) optionElement));
}
}
}
dataMap.put("options", option != null ? option : null);
return dataMap;
}
private Map<String, String> optionToMap(Element item){
HashMap dataMap = new HashMap();
dataMap.put("label",item.getAttribute("label"));
dataMap.put("value",item.getAttribute("value"));
return dataMap;
}
} }

View File

@ -92,6 +92,7 @@ public class UploadFieldDataHelperService extends BaseFieldDataHelperService<Upl
data.getTypes().add(this.buildOption(uploadOptionPersist)); data.getTypes().add(this.buildOption(uploadOptionPersist));
} }
} }
data.setMaxFileSizeInMB(persist.getMaxFileSizeInMB());
return data; return data;
} }
@ -113,6 +114,7 @@ public class UploadFieldDataHelperService extends BaseFieldDataHelperService<Upl
persist.getTypes().add(this.buildOption(option)); persist.getTypes().add(this.buildOption(option));
} }
} }
persist.setMaxFileSizeInMB(data.getMaxFileSizeInMB());
return persist; return persist;
} }
@ -134,6 +136,7 @@ public class UploadFieldDataHelperService extends BaseFieldDataHelperService<Upl
xml.getTypes().add(this.buildOption(option)); xml.getTypes().add(this.buildOption(option));
} }
} }
xml.setMaxFileSizeInMB(data.getMaxFileSizeInMB());
return xml; return xml;
} }

View File

@ -172,23 +172,23 @@ public class Admin extends BaseController {
// } // }
// } // }
@Transactional // @Transactional
@RequestMapping(method = RequestMethod.GET, value = {"/getXml/{id}"}, produces = "application/json") // @RequestMapping(method = RequestMethod.GET, value = {"/getXml/{id}"}, produces = "application/json")
public ResponseEntity getDatasetProfileXml(@PathVariable String id, @RequestHeader("Content-Type") String contentType) throws IllegalAccessException, IOException, InstantiationException, InvalidApplicationException { // public ResponseEntity getDatasetProfileXml(@PathVariable String id, @RequestHeader("Content-Type") String contentType) throws IllegalAccessException, IOException, InstantiationException, InvalidApplicationException {
this.authorizationService.authorizeForce(Permission.AdminRole, Permission.DatasetProfileManagerRole); // this.authorizationService.authorizeForce(Permission.AdminRole, Permission.DatasetProfileManagerRole);
//
if (contentType.equals("application/xml")) { // if (contentType.equals("application/xml")) {
DescriptionTemplateEntity profile = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(UUID.fromString(id)); // DescriptionTemplateEntity profile = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(UUID.fromString(id));
eu.eudat.models.data.user.composite.DatasetProfile datasetProfile = userManager.generateDatasetProfileModel(profile); // eu.eudat.models.data.user.composite.DatasetProfile datasetProfile = userManager.generateDatasetProfileModel(profile);
datasetProfile.setStatus(profile.getStatus().getValue()); // datasetProfile.setStatus(profile.getStatus().getValue());
datasetProfile.setDescription(profile.getDescription()); // datasetProfile.setDescription(profile.getDescription());
datasetProfile.setLanguage(profile.getLanguage()); // datasetProfile.setLanguage(profile.getLanguage());
datasetProfile.setType(this.queryFactory.query(DescriptionTemplateTypeQuery.class).ids(profile.getType()).first().getName()); // datasetProfile.setType(this.queryFactory.query(DescriptionTemplateTypeQuery.class).ids(profile.getType()).first().getName());
return this.datasetProfileManager.getDocument(datasetProfile, profile.getLabel()); // return this.datasetProfileManager.getDocument(datasetProfile, profile.getLabel());
} else { // } else {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem<eu.eudat.models.data.admin.composite.DatasetProfile>().status(ApiMessageCode.ERROR_MESSAGE).message("NOT AUTHORIZE")); // return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem<eu.eudat.models.data.admin.composite.DatasetProfile>().status(ApiMessageCode.ERROR_MESSAGE).message("NOT AUTHORIZE"));
} // }
} // }
// @RequestMapping(method = RequestMethod.POST, value = {"/upload", "/upload/{id}"}) // @RequestMapping(method = RequestMethod.POST, value = {"/upload", "/upload/{id}"})
// public ResponseEntity<Object> setDatasetProfileXml(@RequestParam("file") MultipartFile file, // public ResponseEntity<Object> setDatasetProfileXml(@RequestParam("file") MultipartFile file,

View File

@ -1,22 +1,18 @@
package eu.eudat.controllers; package eu.eudat.controllers;
import eu.eudat.authorization.Permission;
import eu.eudat.commons.types.descriptiontemplate.FieldEntity; import eu.eudat.commons.types.descriptiontemplate.FieldEntity;
import eu.eudat.data.dao.criteria.RequestItem; import eu.eudat.commons.types.descriptiontemplate.fielddata.AutoCompleteDataEntity;
import eu.eudat.data.DescriptionTemplateEntity; import eu.eudat.data.DescriptionTemplateEntity;
import eu.eudat.logic.managers.AdminManager; import eu.eudat.data.dao.criteria.RequestItem;
import eu.eudat.logic.managers.DatasetProfileManager; import eu.eudat.logic.managers.DatasetProfileManager;
import eu.eudat.logic.services.ApiContext; import eu.eudat.logic.services.ApiContext;
import eu.eudat.commons.types.descriptiontemplate.fielddata.AutoCompleteDataEntity;
import eu.eudat.models.data.externaldataset.ExternalAutocompleteFieldModel; import eu.eudat.models.data.externaldataset.ExternalAutocompleteFieldModel;
import eu.eudat.models.data.helpers.common.AutoCompleteLookupItem; import eu.eudat.models.data.helpers.common.AutoCompleteLookupItem;
import eu.eudat.models.data.helpers.common.AutoCompleteOptionsLookupItem; import eu.eudat.models.data.helpers.common.AutoCompleteOptionsLookupItem;
import eu.eudat.models.data.helpers.responses.ResponseItem;
import gr.cite.commons.web.authz.service.AuthorizationService; import gr.cite.commons.web.authz.service.AuthorizationService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.management.InvalidApplicationException; import javax.management.InvalidApplicationException;

View File

@ -1,47 +0,0 @@
//package eu.eudat.controllers;
//
//import eu.eudat.data.query.items.item.datasetprofile.DatasetProfileAutocompleteRequest;
//import eu.eudat.data.query.items.table.datasetprofile.DatasetProfileTableRequestItem;
//import eu.eudat.logic.managers.DatasetProfileManager;
//import eu.eudat.logic.services.ApiContext;
//import eu.eudat.models.data.datasetprofile.DatasetProfileAutocompleteItem;
//import eu.eudat.models.data.datasetprofile.DatasetProfileListingModel;
//import eu.eudat.models.data.helpers.responses.ResponseItem;
//import eu.eudat.types.ApiMessageCode;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.http.HttpStatus;
//import org.springframework.http.ResponseEntity;
//import org.springframework.web.bind.annotation.*;
//
//import javax.management.InvalidApplicationException;
//import java.util.List;
//
//
//@RestController
//@CrossOrigin
//@RequestMapping(value = {"/api"})
//public class DatasetProfiles extends BaseController {
//
// private DatasetProfileManager datasetProfileManager;
//
// @Autowired
// public DatasetProfiles(ApiContext apiContext, DatasetProfileManager datasetProfileManager) {
// super(apiContext);
// this.datasetProfileManager = datasetProfileManager;
// }
//
//// @RequestMapping(method = RequestMethod.POST, value = {"/dmps/datasetprofiles/get"}, produces = "application/json")
//// public @ResponseBody
//// ResponseEntity<ResponseItem<List<DatasetProfileAutocompleteItem>>> get(@RequestBody DatasetProfileAutocompleteRequest datasetProfileAutocompleteRequest) throws InstantiationException, IllegalAccessException, InvalidApplicationException {
//// List<DatasetProfileAutocompleteItem> datasetProfileAutocompleteItems = this.datasetProfileManager.getWithCriteria(datasetProfileAutocompleteRequest);
//// return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<List<DatasetProfileAutocompleteItem>>().status(ApiMessageCode.NO_MESSAGE).payload(datasetProfileAutocompleteItems));
//// }
//
//// @RequestMapping(method = RequestMethod.POST, value = {"/datasetprofiles/getAll"}, produces = "application/json")
//// public @ResponseBody
//// ResponseEntity<ResponseItem<List<DatasetProfileListingModel>>> getAll(@RequestBody DatasetProfileTableRequestItem tableRequestItem) throws InstantiationException, IllegalAccessException, InvalidApplicationException {
//// List<DatasetProfileListingModel> datasetProfileTableData = this.datasetProfileManager.getAll(tableRequestItem);
//// return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<List<DatasetProfileListingModel>>().status(ApiMessageCode.NO_MESSAGE).payload(datasetProfileTableData));
//// }
//}
//

View File

@ -3,8 +3,17 @@ package eu.eudat.controllers;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import eu.eudat.authorization.AuthorizationFlags;
import eu.eudat.authorization.Permission; import eu.eudat.authorization.Permission;
import eu.eudat.commons.XmlHandlingService;
import eu.eudat.commons.enums.FieldType;
import eu.eudat.commons.scope.user.UserScope; import eu.eudat.commons.scope.user.UserScope;
import eu.eudat.commons.types.descriptiontemplate.DefinitionEntity;
import eu.eudat.commons.types.descriptiontemplate.FieldEntity;
import eu.eudat.commons.types.descriptiontemplate.FieldSetEntity;
import eu.eudat.commons.types.descriptiontemplate.SectionEntity;
import eu.eudat.commons.types.descriptiontemplate.fielddata.UploadDataEntity;
import eu.eudat.data.DescriptionTemplateEntity;
import eu.eudat.data.old.Dataset; import eu.eudat.data.old.Dataset;
import eu.eudat.data.old.FileUpload; import eu.eudat.data.old.FileUpload;
import eu.eudat.exceptions.security.UnauthorisedException; import eu.eudat.exceptions.security.UnauthorisedException;
@ -16,8 +25,11 @@ import eu.eudat.logic.utilities.json.JsonSearcher;
import eu.eudat.models.HintedModelFactory; import eu.eudat.models.HintedModelFactory;
import eu.eudat.models.data.datasetwizard.DatasetWizardModel; import eu.eudat.models.data.datasetwizard.DatasetWizardModel;
import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.models.data.helpers.responses.ResponseItem;
import eu.eudat.query.DescriptionTemplateQuery;
import eu.eudat.types.ApiMessageCode; import eu.eudat.types.ApiMessageCode;
import gr.cite.commons.web.authz.service.AuthorizationService; import gr.cite.commons.web.authz.service.AuthorizationService;
import gr.cite.tools.data.query.QueryFactory;
import jakarta.xml.bind.JAXBException;
import org.apache.poi.util.IOUtils; import org.apache.poi.util.IOUtils;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;
@ -27,12 +39,16 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.util.unit.DataSize;
import org.springframework.util.unit.DataUnit;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import jakarta.transaction.Transactional; import jakarta.transaction.Transactional;
import org.xml.sax.SAXException;
import javax.management.InvalidApplicationException; import javax.management.InvalidApplicationException;
import javax.xml.parsers.ParserConfigurationException;
import java.io.*; import java.io.*;
import java.nio.file.Files; import java.nio.file.Files;
import java.util.*; import java.util.*;
@ -49,67 +65,46 @@ public class FileController {
private DatabaseRepository databaseRepository; private DatabaseRepository databaseRepository;
private final AuthorizationService authorizationService; private final AuthorizationService authorizationService;
private final UserScope userScope; private final UserScope userScope;
private final QueryFactory queryFactory;
private final XmlHandlingService xmlHandlingService;
@Autowired @Autowired
public FileController(DatasetProfileManager datasetProfileManager, Environment environment, ApiContext apiContext, AuthorizationService authorizationService, UserScope userScope) { public FileController(DatasetProfileManager datasetProfileManager, Environment environment, ApiContext apiContext, AuthorizationService authorizationService, UserScope userScope, QueryFactory queryFactory, XmlHandlingService xmlHandlingService) {
this.datasetProfileManager = datasetProfileManager; this.datasetProfileManager = datasetProfileManager;
this.environment = environment; this.environment = environment;
this.databaseRepository = apiContext.getOperationsContext().getDatabaseRepository(); this.databaseRepository = apiContext.getOperationsContext().getDatabaseRepository();
this.authorizationService = authorizationService; this.authorizationService = authorizationService;
this.userScope = userScope; this.userScope = userScope;
this.queryFactory = queryFactory;
this.xmlHandlingService = xmlHandlingService;
} }
@RequestMapping(method = RequestMethod.POST, value = {"/upload"}) @RequestMapping(method = RequestMethod.POST, value = {"/upload"})
public ResponseEntity<ResponseItem<String>> upload( public ResponseEntity<ResponseItem<String>> upload(
@RequestParam("file") MultipartFile file, @RequestParam("datasetProfileId") String datasetProfileId, @RequestParam("fieldId") String fieldId) @RequestParam("file") MultipartFile file, @RequestParam("datasetProfileId") String datasetProfileId, @RequestParam("fieldId") String fieldId)
throws IllegalAccessException, IOException, InvalidApplicationException { throws IllegalAccessException, IOException, InvalidApplicationException, JAXBException, ParserConfigurationException, InstantiationException, SAXException {
this.authorizationService.authorizeForce(Permission.AdminRole, Permission.ManagerRole, Permission.UserRole); this.authorizationService.authorizeForce(Permission.AdminRole, Permission.ManagerRole, Permission.UserRole);
String uuid = UUID.randomUUID().toString(); String uuid = UUID.randomUUID().toString();
eu.eudat.models.data.admin.composite.DatasetProfile datasetprofile = this.datasetProfileManager.getDatasetProfile(datasetProfileId); DescriptionTemplateEntity descriptionTemplate = this.queryFactory.query(DescriptionTemplateQuery.class).ids(UUID.fromString(datasetProfileId)).authorize(AuthorizationFlags.OwnerOrPermission).first();
DefinitionEntity definition = descriptionTemplate == null ? null : this.xmlHandlingService.fromXml(DefinitionEntity.class, descriptionTemplate.getDefinition());
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
String json = mapper.writeValueAsString(datasetprofile.getSections());
JsonNode propertiesJson = mapper.readTree(json);
Set<JsonNode> fieldNodes = new HashSet<>();
fieldNodes.addAll(JsonSearcher.findNodes(propertiesJson, "id", fieldId, false));
// AtomicReference<String> exceptionMessage = null;
AtomicBoolean acceptedFile = new AtomicBoolean(false); AtomicBoolean acceptedFile = new AtomicBoolean(false);
fieldNodes.forEach(node -> { List<FieldEntity> fieldEntities = definition != null ? definition.getFieldById(fieldId).stream().filter(x -> x != null && x.getData() != null && x.getData().getFieldType().equals(FieldType.UPLOAD)).toList() : new ArrayList<>();
JsonNode data = node.get("data");
if (data != null && !data.toString().equals("\"\"") && !data.toString().equals("null")) { fieldEntities.forEach(x-> {
String stringValue = data.toString().replaceAll("=", ":"); UploadDataEntity uploadDataEntity = (UploadDataEntity)x.getData();
JSONObject dataObj = new JSONObject(stringValue); if (DataSize.ofBytes(file.getSize()).equals(DataSize.ofMegabytes(uploadDataEntity.getMaxFileSizeInMB()))) {
Map<String, Object> dataMap = ((JSONObject) dataObj).toMap();
if(dataMap.get("maxFileSizeInMB") != null && !dataMap.get("maxFileSizeInMB").toString().equals("\"\"") && !dataMap.get("maxFileSizeInMB").toString().equals("null")) {
if (file.getSize() <= Integer.parseInt(dataMap.get("maxFileSizeInMB").toString())*1048576) {
acceptedFile.set(true); acceptedFile.set(true);
} }
// else { if(acceptedFile.get() && uploadDataEntity.getTypes() != null && !uploadDataEntity.getTypes().isEmpty()) {
// exceptionMessage.set("The file is too large. Max file upload is " + dataMap.get("maxFileSizeInMB").toString() + " MB.");
// }
}
if(acceptedFile.get() && data.get("types") != null && !data.get("types").toString().equals("\"\"") && !data.get("types").toString().equals("null")) {
acceptedFile.set(false); acceptedFile.set(false);
for (UploadDataEntity.Option option: uploadDataEntity.getTypes()) {
JSONArray types = new JSONArray(data.get("types").toString()); if(Objects.equals(file.getContentType(), option.getValue())) {
types.iterator().forEachRemaining(element -> {
Map<String, Object> typesMap = ((JSONObject) element).toMap();
if(typesMap.get("value") != null && !typesMap.get("value").toString().equals("\"\"") && !typesMap.get("value").toString().equals("null")) {
if(file.getContentType().equals(typesMap.get("value").toString())) {
acceptedFile.set(true); acceptedFile.set(true);
} }
} }
});
}
// if(!acceptedFile.get()) {
// exceptionMessage.set("The file type is not accepted.");
// }
} }
}); });

View File

@ -1,78 +0,0 @@
package eu.eudat.logic.managers;
import eu.eudat.commons.enums.DescriptionTemplateStatus;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.commons.types.descriptiontemplate.PageEntity;
import eu.eudat.commons.types.descriptiontemplate.SectionEntity;
import eu.eudat.data.dao.entities.DatasetDao;
import eu.eudat.data.dao.entities.DatasetProfileDao;
import eu.eudat.data.DescriptionTemplateEntity;
import eu.eudat.data.DescriptionTemplateTypeEntity;
import eu.eudat.exceptions.datasetprofile.DatasetProfileWithDatasetsExeption;
import eu.eudat.logic.builders.entity.DatasetProfileBuilder;
import eu.eudat.commons.types.descriptiontemplate.DefinitionEntity;
import eu.eudat.logic.utilities.builders.ModelBuilder;
import eu.eudat.models.data.admin.composite.DatasetProfile;
import eu.eudat.logic.services.ApiContext;
import eu.eudat.commons.types.xml.XmlBuilder;
import eu.eudat.service.descriptiontemplatetype.DescriptionTemplateTypeService;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import javax.management.InvalidApplicationException;
import java.time.Instant;
import java.util.UUID;
public class AdminManager {
public static DescriptionTemplateEntity generateViewStyleDefinition(DatasetProfile profile, ApiContext apiContext, DescriptionTemplateTypeService descriptionTemplateTypeService) throws Exception {
DefinitionEntity defintion = new DefinitionEntity();
defintion.setSections(new ModelBuilder().toViewStyleDefinition(profile.getSections(), SectionEntity.class));
defintion.setPages(new ModelBuilder().toViewStyleDefinition(profile.getPages(), PageEntity.class));
Document viewStyleDoc = XmlBuilder.getDocument();
Element elementViewStyle = defintion.toXml(viewStyleDoc);
viewStyleDoc.appendChild(elementViewStyle);
String xml = XmlBuilder.generateXml(viewStyleDoc);
if (profile.getDescription() == null) {
profile.setDescription("");
}
if (profile.getLanguage() == null) {
profile.setLanguage("en");
}
DescriptionTemplateTypeEntity type;
try {
//TODO: dtziotzios type = descriptionTemplateTypeService.getEntityByName(profile.getType());
}
catch (Exception e) {
throw new Exception("Description template type '" + profile.getType() + "' could not be found.");
}
DescriptionTemplateEntity descriptionTemplateEntity = apiContext.getOperationsContext().getBuilderFactory().getBuilder(DatasetProfileBuilder.class).definition(xml).label(profile.getLabel())
.status(DescriptionTemplateStatus.of(profile.getStatus())).created(Instant.now()).description(profile.getDescription()).language(profile.getLanguage())
//TODO: dtziotzios .type(type)
.build();
if (descriptionTemplateEntity.getGroupId() == null) {
descriptionTemplateEntity.setGroupId(UUID.randomUUID());
}
if (descriptionTemplateEntity.getVersion() == null) {
descriptionTemplateEntity.setVersion((short)1);
}
return descriptionTemplateEntity;
}
public static eu.eudat.models.data.admin.composite.DatasetProfile generateDatasetProfileModel(DescriptionTemplateEntity profile) {
Document viewStyleDoc = XmlBuilder.fromXml(profile.getDefinition());
Element root = viewStyleDoc.getDocumentElement();
DefinitionEntity viewstyle = new DefinitionEntity().fromXml(root);
eu.eudat.models.data.admin.composite.DatasetProfile datasetprofile = new eu.eudat.models.data.admin.composite.DatasetProfile();
datasetprofile.buildProfile(viewstyle);
return datasetprofile;
}
}

View File

@ -1,27 +1,17 @@
package eu.eudat.logic.managers; package eu.eudat.logic.managers;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.commons.scope.user.UserScope; import eu.eudat.commons.scope.user.UserScope;
import eu.eudat.data.UserDescriptionTemplateEntity; import eu.eudat.commons.types.descriptiontemplate.FieldEntity;
import eu.eudat.commons.types.descriptiontemplate.fielddata.AutoCompleteDataEntity;
import eu.eudat.commons.types.xml.XmlBuilder;
import eu.eudat.data.DescriptionTemplateEntity; import eu.eudat.data.DescriptionTemplateEntity;
import eu.eudat.data.old.UserInfo;
import eu.eudat.logic.proxy.config.*; import eu.eudat.logic.proxy.config.*;
import eu.eudat.logic.proxy.config.configloaders.ConfigLoader; import eu.eudat.logic.proxy.config.configloaders.ConfigLoader;
import eu.eudat.logic.proxy.config.entities.GeneralUrls; import eu.eudat.logic.proxy.config.entities.GeneralUrls;
import eu.eudat.logic.proxy.fetching.RemoteFetcher; import eu.eudat.logic.proxy.fetching.RemoteFetcher;
import eu.eudat.logic.services.ApiContext; import eu.eudat.logic.services.ApiContext;
import eu.eudat.logic.services.operations.DatabaseRepository; import eu.eudat.logic.services.operations.DatabaseRepository;
import eu.eudat.commons.types.xml.XmlBuilder;
import eu.eudat.logic.utilities.documents.helpers.FileEnvelope;
import eu.eudat.logic.utilities.documents.xml.datasetProfileXml.ExportXmlBuilderDatasetProfile;
import eu.eudat.commons.types.descriptiontemplate.fielddata.AutoCompleteDataEntity;
import eu.eudat.commons.types.descriptiontemplate.FieldEntity;
import eu.eudat.models.data.externaldataset.ExternalAutocompleteFieldModel; import eu.eudat.models.data.externaldataset.ExternalAutocompleteFieldModel;
import eu.eudat.models.data.listingmodels.UserInfoListingModel;
import eu.eudat.service.mail.SimpleMail;
import eu.eudat.query.DescriptionTemplateQuery;
import eu.eudat.query.DescriptionTemplateTypeQuery;
import eu.eudat.query.UserDescriptionTemplateQuery;
import eu.eudat.service.descriptiontemplatetype.DescriptionTemplateTypeService; import eu.eudat.service.descriptiontemplatetype.DescriptionTemplateTypeService;
import gr.cite.commons.web.authz.service.AuthorizationService; import gr.cite.commons.web.authz.service.AuthorizationService;
import gr.cite.tools.data.deleter.DeleterFactory; import gr.cite.tools.data.deleter.DeleterFactory;
@ -30,16 +20,13 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.http.*; import org.springframework.http.MediaType;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import org.w3c.dom.Node; import org.w3c.dom.Node;
import org.w3c.dom.NodeList; import org.w3c.dom.NodeList;
import jakarta.activation.MimetypesFileTypeMap;
import jakarta.transaction.Transactional;
import javax.management.InvalidApplicationException; import javax.management.InvalidApplicationException;
import javax.xml.transform.OutputKeys; import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer; import javax.xml.transform.Transformer;
@ -48,11 +35,13 @@ import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource; import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.*; import javax.xml.xpath.*;
import java.io.*; import java.io.StringWriter;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.nio.file.Files; import java.util.ArrayList;
import java.util.*; import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -61,82 +50,17 @@ public class DatasetProfileManager {
private static final Logger logger = LoggerFactory.getLogger(DatasetProfileManager.class); private static final Logger logger = LoggerFactory.getLogger(DatasetProfileManager.class);
private static final List<String> cache = new ArrayList<>(); private static final List<String> cache = new ArrayList<>();
private final ApiContext apiContext;
private final DatabaseRepository databaseRepository; private final DatabaseRepository databaseRepository;
private final Environment environment;
private final ConfigLoader configLoader; private final ConfigLoader configLoader;
private final MetricsManager metricsManager;
private final RemoteFetcher remoteFetcher; private final RemoteFetcher remoteFetcher;
private final DescriptionTemplateTypeService descriptionTemplateTypeService;
private final AuthorizationService authorizationService;
private final UserScope userScope;
private final QueryFactory queryFactory;
private final DeleterFactory deleterFactory;
@Autowired @Autowired
public DatasetProfileManager(ApiContext apiContext, Environment environment, ConfigLoader configLoader, MetricsManager metricsManager, RemoteFetcher remoteFetcher, DescriptionTemplateTypeService descriptionTemplateTypeService, AuthorizationService authorizationService, UserScope userScope, QueryFactory queryFactory, DeleterFactory deleterFactory) { public DatasetProfileManager(ApiContext apiContext, ConfigLoader configLoader, RemoteFetcher remoteFetcher) {
this.apiContext = apiContext;
this.databaseRepository = apiContext.getOperationsContext().getDatabaseRepository(); this.databaseRepository = apiContext.getOperationsContext().getDatabaseRepository();
this.environment = environment;
this.configLoader = configLoader; this.configLoader = configLoader;
this.metricsManager = metricsManager;
this.descriptionTemplateTypeService = descriptionTemplateTypeService;
this.remoteFetcher = remoteFetcher; this.remoteFetcher = remoteFetcher;
this.authorizationService = authorizationService;
this.userScope = userScope;
this.queryFactory = queryFactory;
this.deleterFactory = deleterFactory;
} }
@Transactional
public eu.eudat.models.data.admin.composite.DatasetProfile getDatasetProfile(String id) throws InvalidApplicationException {
DescriptionTemplateEntity profile = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(UUID.fromString(id));
eu.eudat.models.data.admin.composite.DatasetProfile datasetprofile = AdminManager.generateDatasetProfileModel(profile);
datasetprofile.setLabel(profile.getLabel());
datasetprofile.setStatus(profile.getStatus().getValue());
datasetprofile.setDescription(profile.getDescription());
datasetprofile.setType(this.queryFactory.query(DescriptionTemplateTypeQuery.class).ids(profile.getType()).first().getName());
datasetprofile.setLanguage(profile.getLanguage());
datasetprofile.setUsers(new ArrayList<>());
retrieveUsers(profile, datasetprofile);
return datasetprofile;
}
// public List<DatasetProfileAutocompleteItem> getWithCriteria(DatasetProfileAutocompleteRequest datasetProfileAutocompleteRequest) throws IllegalAccessException, InstantiationException, InvalidApplicationException {
// QueryableList<DescriptionTemplateEntity> items = databaseRepository.getDatasetProfileDao().getWithCriteria(datasetProfileAutocompleteRequest.getCriteria());
// QueryableList<DescriptionTemplateEntity> pagedItems = datasetProfileAutocompleteRequest.applyPaging(items);
// List<DatasetProfileAutocompleteItem> datasetProfiles = pagedItems.select(item -> new DatasetProfileAutocompleteItem().fromDataModel(item));
// return datasetProfiles;
// }
//
// public DescriptionTemplateEntity clone(String id) throws InvalidApplicationException {
// DescriptionTemplateEntity profile = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(UUID.fromString(id));
// apiContext.getOperationsContext().getDatabaseRepository().detachEntity(profile);
// profile.setId(null);
// return profile;
// }
// public DataTableData<DatasetProfileListingModel> getPaged(DatasetProfileTableRequestItem datasetProfileTableRequestItem) throws Exception {
// QueryableList<DescriptionTemplateEntity> items = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().getWithCriteria(datasetProfileTableRequestItem.getCriteria());
// QueryableList<DescriptionTemplateEntity> authItems = null;
// if (this.authorizationService.authorize(Permission.AdminRole)) {
// authItems = items;
// } else if (this.authorizationService.authorize(Permission.DatasetProfileManagerRole)) {
// List<Integer> roles = Arrays.asList(0, 1);
// authItems = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().getAuthenticated(items, this.userScope.getUserId(), roles);
// }
// QueryableList<DescriptionTemplateEntity> pagedItems = PaginationManager.applyPaging(authItems, datasetProfileTableRequestItem);
// List<DatasetProfileListingModel> datasetProfiles = pagedItems.select(item -> new DatasetProfileListingModel().fromDataModel(item));
// return apiContext.getOperationsContext().getBuilderFactory().getBuilder(DataTableDataBuilder.class).data(datasetProfiles).totalCount(items.count()).build();
// }
// public List<DatasetProfileListingModel> getAll(DatasetProfileTableRequestItem tableRequestItem) throws IllegalAccessException, InstantiationException, InvalidApplicationException {
// QueryableList<DescriptionTemplateEntity> items = databaseRepository.getDatasetProfileDao().getWithCriteria(tableRequestItem.getCriteria());
// List<DatasetProfileListingModel> datasetProfiles = items.select(item -> new DatasetProfileListingModel().fromDataModel(item));
//
// return datasetProfiles;
// }
public FieldEntity queryForField(String xml, String fieldId) throws XPathExpressionException { public FieldEntity queryForField(String xml, String fieldId) throws XPathExpressionException {
FieldEntity fieldEntity = new FieldEntity(); FieldEntity fieldEntity = new FieldEntity();
Document document = XmlBuilder.fromXml(xml); Document document = XmlBuilder.fromXml(xml);
@ -295,181 +219,6 @@ public class DatasetProfileManager {
return item != null ? item.toString() : null; return item != null ? item.toString() : null;
} }
public ResponseEntity<byte[]> getDocument(eu.eudat.models.data.user.composite.DatasetProfile datasetProfile, String label) throws IllegalAccessException, IOException, InstantiationException {
FileEnvelope envelope = getXmlDocument(datasetProfile, label);
InputStream resource = new FileInputStream(envelope.getFile());
logger.info("Mime Type of " + envelope.getFilename() + " is " +
new MimetypesFileTypeMap().getContentType(envelope.getFile()));
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.setContentLength(envelope.getFile().length());
responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
String fileName = envelope.getFilename().replace(" ", "_").replace(",", "_");
responseHeaders.set("Content-Disposition", "attachment;filename=" + fileName + ".xml");
responseHeaders.set("Access-Control-Expose-Headers", "Content-Disposition");
responseHeaders.get("Access-Control-Expose-Headers").add("Content-Type");
byte[] content = org.apache.poi.util.IOUtils.toByteArray(resource);
resource.close();
Files.deleteIfExists(envelope.getFile().toPath());
return new ResponseEntity<>(content,
responseHeaders,
HttpStatus.OK);
}
public FileEnvelope getXmlDocument(eu.eudat.models.data.user.composite.DatasetProfile datatasetProfile, String label) throws InstantiationException, IllegalAccessException, IOException {
ExportXmlBuilderDatasetProfile xmlBuilder = new ExportXmlBuilderDatasetProfile();
File file = xmlBuilder.build(datatasetProfile, environment);
FileEnvelope fileEnvelope = new FileEnvelope();
fileEnvelope.setFile(file);
fileEnvelope.setFilename(label);
return fileEnvelope;
}
// public DescriptionTemplateImportXml createDatasetProfileFromXml(MultipartFile multiPartFile) {
// ImportXmlBuilderDatasetProfile xmlBuilder = new ImportXmlBuilderDatasetProfile();
// try {
// File localFile = convert(multiPartFile);
// DescriptionTemplateImportXml profile = xmlBuilder.build(localFile);
// Files.deleteIfExists(localFile.toPath());
// metricsManager.increaseValue(MetricNames.DATASET_TEMPLATE, 1, MetricNames.DRAFT);
// return profile;
// } catch (IOException e) {
// logger.error(e.getMessage(), e);
// }
// return null;
// }
// private File convert(MultipartFile file) throws IOException {
// File convFile = new File(this.environment.getProperty("temp.temp") + file.getOriginalFilename());
// convFile.createNewFile();
// FileOutputStream fos = new FileOutputStream(convFile);
// fos.write(file.getBytes());
// fos.close();
// return convFile;
// }
//
// public DescriptionTemplateEntity createNewVersionDatasetProfile(String id, eu.eudat.models.data.admin.composite.DatasetProfile profile) throws Exception {
// // Getting the DescriptionTemplate which we will create its new version.
// DescriptionTemplateEntity oldDescriptionTemplateEntity = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(UUID.fromString(id));
//
// // Getting the DescriptionTemplate with the latest Version.
// DatasetProfileCriteria criteria = new DatasetProfileCriteria();
// LinkedList<UUID> list = new LinkedList<>();
// list.push(oldDescriptionTemplateEntity.getGroupId());
// criteria.setGroupIds(list);
// criteria.setAllVersions(false);
// QueryableList<DescriptionTemplateEntity> datasetProfileQueryableList = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().getWithCriteria(criteria);
// DescriptionTemplateEntity latestVersionDescriptionTemplateEntity = datasetProfileQueryableList.getSingle();
//
// if (latestVersionDescriptionTemplateEntity.getVersion().equals(oldDescriptionTemplateEntity.getVersion())){
// eu.eudat.models.data.admin.composite.DatasetProfile sortedProfile = profile.toShort();
// DescriptionTemplateEntity modelDefinition = AdminManager.generateViewStyleDefinition(sortedProfile, apiContext, descriptionTemplateTypeService);
//// modelDefinition.setLabel(oldDescriptionTemplate.getLabel());
// modelDefinition.setVersion((short) (oldDescriptionTemplateEntity.getVersion() + 1));
// modelDefinition.setGroupId(oldDescriptionTemplateEntity.getGroupId());
//// modelDefinition.setLanguage(oldDescriptionTemplate.getLanguage());
// apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().createOrUpdate(modelDefinition);
// DescriptionTemplateEntity descriptionTemplateEntity = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().createOrUpdate(modelDefinition);
// this.storeDatasetProfileUsers(descriptionTemplateEntity, profile);
// return modelDefinition;
// } else {
// throw new DatasetProfileNewVersionException("Version to update not the latest.");
// }
// }
// public void storeDatasetProfileUsers(DescriptionTemplateEntity entity, eu.eudat.models.data.admin.composite.DatasetProfile model) {
// final List<UserDescriptionTemplateEntity> userDescriptionTemplateEntities = this.queryFactory.query(UserDescriptionTemplateQuery.class).isActive(IsActive.Active).descriptionTemplateIds(entity.getId()).collect();
// if (model.getUsers() != null && !model.getUsers().isEmpty()) {
// model.getUsers().stream().filter(userInfoListingModel -> userDescriptionTemplateEntities.stream()
// .filter(userDatasetProfile -> userDatasetProfile.getUser().equals(userInfoListingModel.getId())).count() == 0)
// .forEach(userInfoListingModel -> {
// UserDescriptionTemplateEntity userDatasetProfile1 = new UserDescriptionTemplateEntity();
// userDatasetProfile1.setDescriptionTemplate(entity.getId());
// UserInfo userInfo1 = null;
// try {
// userInfo1 = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(userInfoListingModel.getId());
// } catch (InvalidApplicationException e) {
// throw new RuntimeException(e);
// }
// userDatasetProfile1.setUser(userInfo1.getId());
// userDatasetProfile1.setRole(UserDescriptionTemplateRole.Member);
// apiContext.getOperationsContext().getDatabaseRepository().getUserDatasetProfileDao().createOrUpdate(userDatasetProfile1);
// sendJoinMail(userDatasetProfile1);
// });
//// userDescriptionTemplateEntities.stream().filter(userDatasetProfile -> model.getUsers().stream()
//// .filter(userInfoListingModel -> userDatasetProfile.getUser().equals(userInfoListingModel.getId())).count() > 0
//// && userDatasetProfile.getRole() == UserDescriptionTemplateRole.Saved2).forEach(userDatasetProfile -> {
//// userDatasetProfile.setRole(UserDescriptionTemplateRole.Member);
//// apiContext.getOperationsContext().getDatabaseRepository().getUserDatasetProfileDao().createOrUpdate(userDatasetProfile);
//// sendJoinMail(userDatasetProfile);
//// });
// }
// if (userDescriptionTemplateEntities != null && !userDescriptionTemplateEntities.isEmpty()) {
// List<UserDescriptionTemplateEntity> toDelete = new ArrayList<>();
//
// userDescriptionTemplateEntities.stream().filter(userDatasetProfile -> model.getUsers().stream()
// .filter(userInfoListingModel -> userDatasetProfile.getUser().equals(userInfoListingModel.getId())).count() == 0)
// .forEach(userDatasetProfile -> {
// toDelete.add(userDatasetProfile);
// apiContext.getOperationsContext().getDatabaseRepository().getUserDatasetProfileDao().createOrUpdate(userDatasetProfile);
// });
// try {
// this.deleterFactory.deleter(UserDescriptionTemplateDeleter.class).delete(toDelete);
// } catch (InvalidApplicationException e) {
// throw new RuntimeException(e);
// }
//
// }
// }
@Transactional
public void retrieveUsers(DescriptionTemplateEntity entity, eu.eudat.models.data.admin.composite.DatasetProfile model) {
final List<UserDescriptionTemplateEntity> userDescriptionTemplateEntities = this.queryFactory.query(UserDescriptionTemplateQuery.class).isActive(IsActive.Active).descriptionTemplateIds(entity.getId()).collect();
if (userDescriptionTemplateEntities != null && !userDescriptionTemplateEntities.isEmpty()) {
model.setUsers(userDescriptionTemplateEntities.stream().filter(userDatasetProfile -> userDatasetProfile.getRole().getValue() < 2).map(userDatasetProfile -> {
UserInfo user = null;
try {
user = this.apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(userDatasetProfile.getUser());
} catch (InvalidApplicationException e) {
throw new RuntimeException(e);
}
UserInfoListingModel userInfoListingModel = new UserInfoListingModel();
userInfoListingModel.setId(user.getId());
userInfoListingModel.setName(user.getName());
userInfoListingModel.setEmail(user.getEmail());
userInfoListingModel.setRole(userDatasetProfile.getRole().getValue());
return userInfoListingModel;
}).collect(Collectors.toList()));
}
}
// private void sendJoinMail(UserDescriptionTemplateEntity userDatasetProfile) {
// SimpleMail mail = new SimpleMail();
// UserInfo user = null;
// try {
// user = this.apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(userDatasetProfile.getUser());
// } catch (InvalidApplicationException e) {
// throw new RuntimeException(e);
// }
// DescriptionTemplateEntity descriptionTemplate = this.queryFactory.query(DescriptionTemplateQuery.class).isActive(IsActive.Active).ids(userDatasetProfile.getDescriptionTemplate()).first();
//
// mail.setSubject(environment.getProperty("admin.mail.subject").replace( "{templateName}", descriptionTemplate.getLabel()));
// String content = apiContext.getUtilitiesService().getMailService().getMailTemplateContent(environment.getProperty("email.dataset.template"));
// content = content.replace("{recipient}", user.getName());
// content = content.replace("{templateName}", descriptionTemplate.getLabel());
// content = content.replace("{host}", this.environment.getProperty("dmp.domain"));
// content = content.replace("{templateID}", descriptionTemplate.getId().toString());
// mail.setContent(content);
// mail.setTo(user.getEmail());
// try {
// apiContext.getUtilitiesService().getMailService().sendSimpleMail(mail);
// } catch (Exception ex) {
// logger.error(ex.getMessage(), ex);
// }
//
// }
public List<String> getSemantics(String query) { public List<String> getSemantics(String query) {
List<Semantic> semantics = configLoader.getSemantics(); List<Semantic> semantics = configLoader.getSemantics();
List<String> filteredSemantics = semantics.stream().map(Semantic::getName).collect(Collectors.toList()); List<String> filteredSemantics = semantics.stream().map(Semantic::getName).collect(Collectors.toList());

View File

@ -8,6 +8,7 @@ import eu.eudat.commons.types.descriptiontemplate.todelete.VisibilityEntity;
import eu.eudat.commons.types.descriptiontemplate.fielddata.FieldDataHelper; import eu.eudat.commons.types.descriptiontemplate.fielddata.FieldDataHelper;
import eu.eudat.commons.types.descriptiontemplate.FieldEntity; import eu.eudat.commons.types.descriptiontemplate.FieldEntity;
import eu.eudat.logic.utilities.interfaces.ViewStyleDefinition; import eu.eudat.logic.utilities.interfaces.ViewStyleDefinition;
import org.apache.commons.lang3.NotImplementedException;
import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.RandomStringUtils;
import java.util.List; import java.util.List;
@ -120,13 +121,15 @@ public class Field implements DatabaseViewStyleDefinition, ViewStyleDefinition<F
fieldEntity.setId(this.id); fieldEntity.setId(this.id);
fieldEntity.setOrdinal(this.ordinal); fieldEntity.setOrdinal(this.ordinal);
fieldEntity.setData(new FieldDataHelper().toFieldData(data, this.viewStyle.getFieldType())); throw new NotImplementedException(" Use new logic");
fieldEntity.setVisibilityRules(this.visible.getRules()); //TODO: Use new logic
fieldEntity.setDefaultValue(this.defaultValue.getValue()); // fieldEntity.setData(new FieldDataHelper().toFieldData(data, this.viewStyle.getFieldType()));
fieldEntity.setValidations(this.validations); // fieldEntity.setVisibilityRules(this.visible.getRules());
fieldEntity.setSchematics(this.schematics); // fieldEntity.setDefaultValue(this.defaultValue.getValue());
fieldEntity.setIncludeInExport(this.export); // fieldEntity.setValidations(this.validations);
return fieldEntity; // fieldEntity.setSchematics(this.schematics);
// fieldEntity.setIncludeInExport(this.export);
// return fieldEntity;
} }
@Override @Override

View File

@ -13,6 +13,7 @@ import eu.eudat.models.data.properties.PropertiesGenerator;
import eu.eudat.models.data.user.composite.PropertiesModelBuilder; import eu.eudat.models.data.user.composite.PropertiesModelBuilder;
import eu.eudat.logic.utilities.interfaces.ViewStyleDefinition; import eu.eudat.logic.utilities.interfaces.ViewStyleDefinition;
import org.apache.commons.lang3.NotImplementedException;
import org.json.JSONException; import org.json.JSONException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -191,13 +192,15 @@ public class Field implements Comparable, PropertiesModelBuilder, ViewStyleDefin
public FieldEntity toDatabaseDefinition(FieldEntity fieldEntity) { public FieldEntity toDatabaseDefinition(FieldEntity fieldEntity) {
fieldEntity.setId(this.id); fieldEntity.setId(this.id);
fieldEntity.setOrdinal(this.ordinal); fieldEntity.setOrdinal(this.ordinal);
fieldEntity.setData(new FieldDataHelper().toFieldData(data, this.viewStyle.getFieldType())); throw new NotImplementedException(" Use new logic");
fieldEntity.setDefaultValue(this.defaultValue.getValue()); //TODO: Use new logic
fieldEntity.setVisibilityRules(this.visible.getRules()); // fieldEntity.setData(new FieldDataHelper().toFieldData(data, this.viewStyle.getFieldType()));
fieldEntity.setValidations(this.validations); // fieldEntity.setDefaultValue(this.defaultValue.getValue());
fieldEntity.setSchematics(this.schematics); // fieldEntity.setVisibilityRules(this.visible.getRules());
fieldEntity.setIncludeInExport(this.export); // fieldEntity.setValidations(this.validations);
return fieldEntity; // fieldEntity.setSchematics(this.schematics);
// fieldEntity.setIncludeInExport(this.export);
// return fieldEntity;
} }
@Override @Override