Adds Project external dynamic configuration properties.
This commit is contained in:
parent
5dcf8397df
commit
beb7744e43
|
@ -0,0 +1,12 @@
|
|||
package eu.eudat.configurations.dynamicproject;
|
||||
|
||||
import eu.eudat.configurations.dynamicgrant.entities.Configuration;
|
||||
import eu.eudat.models.data.dynamicfields.DynamicField;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface DynamicProjectConfiguration {
|
||||
Configuration getConfiguration();
|
||||
|
||||
List<DynamicField> getFields();
|
||||
}
|
|
@ -0,0 +1,85 @@
|
|||
package eu.eudat.configurations.dynamicproject;
|
||||
|
||||
import eu.eudat.configurations.dynamicgrant.entities.Configuration;
|
||||
import eu.eudat.configurations.dynamicgrant.entities.Property;
|
||||
import eu.eudat.models.data.dynamicfields.Dependency;
|
||||
import eu.eudat.models.data.dynamicfields.DynamicField;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.Unmarshaller;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
@Service("dynamicProjectConfiguration")
|
||||
@Profile("devel")
|
||||
public class DynamicProjectConfigurationDevelImpl implements DynamicProjectConfiguration{
|
||||
|
||||
private Configuration configuration;
|
||||
private List<DynamicField> fields;
|
||||
private Environment environment;
|
||||
|
||||
@Autowired
|
||||
public DynamicProjectConfigurationDevelImpl(Environment environment) {
|
||||
this.environment = environment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Configuration getConfiguration() {
|
||||
if (this.configuration != null) return this.configuration;
|
||||
String fileUrl = this.environment.getProperty("configuration.dynamicProjectUrl");
|
||||
System.out.println("Loaded also config file: " + fileUrl);
|
||||
String current = null;
|
||||
InputStream is = null;
|
||||
try {
|
||||
current = new java.io.File(".").getCanonicalPath();
|
||||
|
||||
JAXBContext jaxbContext = JAXBContext.newInstance(Configuration.class);
|
||||
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
|
||||
is = new URL("file:///"+current + "/web/src/main/resources/ProjectConfiguration.xml").openStream();
|
||||
this.configuration = (Configuration) jaxbUnmarshaller.unmarshal(is);
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
System.out.println("Cannot find in folder" + current);
|
||||
} finally {
|
||||
try {
|
||||
if (is != null) is.close();
|
||||
} catch (IOException e) {
|
||||
System.out.println("Warning: Could not close a stream after reading from file: " + fileUrl);
|
||||
}
|
||||
}
|
||||
return this.configuration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DynamicField> getFields() {
|
||||
if (this.fields != null) return this.fields;
|
||||
Configuration configuration = this.getConfiguration();
|
||||
List<DynamicField> fields = new LinkedList<>();
|
||||
List<Property> properties = configuration.getConfigurationProperties();
|
||||
properties.stream().forEach(item -> {
|
||||
DynamicField dynamicField = new DynamicField();
|
||||
dynamicField.setId(item.getId());
|
||||
dynamicField.setName(item.getName());
|
||||
dynamicField.setQueryProperty(item.getQueryProperty());
|
||||
dynamicField.setRequired(item.getRequired());
|
||||
List<Dependency> dependencies = new LinkedList<>();
|
||||
item.getDependencies().stream().forEach(dependency -> {
|
||||
Dependency modelDependency = new Dependency();
|
||||
modelDependency.setId(dependency.getId());
|
||||
modelDependency.setQueryProperty(dependency.getQueryProperty());
|
||||
dependencies.add(modelDependency);
|
||||
});
|
||||
dynamicField.setDependencies(dependencies);
|
||||
fields.add(dynamicField);
|
||||
});
|
||||
this.fields = fields;
|
||||
return fields;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,88 @@
|
|||
package eu.eudat.configurations.dynamicproject;
|
||||
|
||||
import eu.eudat.configurations.dynamicgrant.entities.Configuration;
|
||||
import eu.eudat.configurations.dynamicgrant.entities.Property;
|
||||
import eu.eudat.models.data.dynamicfields.Dependency;
|
||||
import eu.eudat.models.data.dynamicfields.DynamicField;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.Unmarshaller;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
@Service("dynamicProjectConfiguration")
|
||||
@Profile({ "production", "staging" })
|
||||
public class DynamicProjectConfigurationProdImpl implements DynamicProjectConfiguration{
|
||||
|
||||
private Configuration configuration;
|
||||
|
||||
private List<DynamicField> fields;
|
||||
|
||||
private Environment environment;
|
||||
|
||||
@Autowired
|
||||
public DynamicProjectConfigurationProdImpl(Environment environment) {
|
||||
this.environment = environment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Configuration getConfiguration() {
|
||||
if (this.configuration != null) return this.configuration;
|
||||
String fileUrl = this.environment.getProperty("configuration.dynamicProjectUrl");
|
||||
System.out.println("Loaded also config file: " + fileUrl);
|
||||
String current = null;
|
||||
InputStream is = null;
|
||||
try {
|
||||
current = new java.io.File(".").getCanonicalPath();
|
||||
|
||||
JAXBContext jaxbContext = JAXBContext.newInstance(Configuration.class);
|
||||
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
|
||||
is = new URL(Paths.get(fileUrl).toUri().toURL().toString()).openStream();
|
||||
this.configuration = (Configuration) jaxbUnmarshaller.unmarshal(is);
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
System.out.println("Cannot find in folder" + current);
|
||||
} finally {
|
||||
try {
|
||||
if (is != null) is.close();
|
||||
} catch (IOException e) {
|
||||
System.out.println("Warning: Could not close a stream after reading from file: " + fileUrl);
|
||||
}
|
||||
}
|
||||
return this.configuration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DynamicField> getFields() {
|
||||
if (this.fields != null) return this.fields;
|
||||
Configuration configuration = this.getConfiguration();
|
||||
List<DynamicField> fields = new LinkedList<>();
|
||||
List<Property> properties = configuration.getConfigurationProperties();
|
||||
properties.stream().forEach(item -> {
|
||||
DynamicField dynamicField = new DynamicField();
|
||||
dynamicField.setId(item.getId());
|
||||
dynamicField.setName(item.getName());
|
||||
dynamicField.setQueryProperty(item.getQueryProperty());
|
||||
dynamicField.setRequired(item.getRequired());
|
||||
List<Dependency> dependencies = new LinkedList<>();
|
||||
item.getDependencies().stream().forEach(dependency -> {
|
||||
Dependency modelDependency = new Dependency();
|
||||
modelDependency.setId(dependency.getId());
|
||||
modelDependency.setQueryProperty(dependency.getQueryProperty());
|
||||
dependencies.add(modelDependency);
|
||||
});
|
||||
dynamicField.setDependencies(dependencies);
|
||||
fields.add(dynamicField);
|
||||
});
|
||||
this.fields = fields;
|
||||
return fields;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
package eu.eudat.configurations.dynamicproject.entities;
|
||||
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
import java.util.List;
|
||||
|
||||
@XmlRootElement
|
||||
public class Configuration {
|
||||
private List<Property> configurationProperties;
|
||||
private MainProperty mainExternalField;
|
||||
|
||||
public MainProperty getMainExternalField() {
|
||||
return mainExternalField;
|
||||
}
|
||||
|
||||
@XmlElement(name = "mainExternalField")
|
||||
public void setMainExternalField(MainProperty mainExternalField) {
|
||||
this.mainExternalField = mainExternalField;
|
||||
}
|
||||
|
||||
public List<Property> getConfigurationProperties() {
|
||||
return configurationProperties;
|
||||
}
|
||||
|
||||
@XmlElementWrapper
|
||||
@XmlElement(name = "property")
|
||||
public void setConfigurationProperties(List<Property> configurationProperties) {
|
||||
this.configurationProperties = configurationProperties;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package eu.eudat.configurations.dynamicproject.entities;
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
|
||||
public class Dependency {
|
||||
private String id;
|
||||
private String queryProperty;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getQueryProperty() {
|
||||
return queryProperty;
|
||||
}
|
||||
|
||||
@XmlElement(name = "id")
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@XmlElement(name = "queryProperty")
|
||||
public void setQueryProperty(String queryProperty) {
|
||||
this.queryProperty = queryProperty;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package eu.eudat.configurations.dynamicproject.entities;
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
|
||||
public class Language {
|
||||
private String key;
|
||||
private String languageKey;
|
||||
|
||||
public String getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
@XmlElement(name = "key")
|
||||
public void setKey(String key) {
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
public String getLanguageKey() {
|
||||
return languageKey;
|
||||
}
|
||||
|
||||
@XmlElement(name = "languageKey")
|
||||
public void setLanguageKey(String languageKey) {
|
||||
this.languageKey = languageKey;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,103 @@
|
|||
package eu.eudat.configurations.dynamicproject.entities;
|
||||
|
||||
import eu.eudat.logic.proxy.config.UrlConfiguration;
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import java.util.List;
|
||||
|
||||
public class MainProperty {
|
||||
private String id;
|
||||
private String name;
|
||||
private String queryProperty;
|
||||
private String externalFieldId;
|
||||
private UrlConfiguration urlConfig;
|
||||
private String externalFieldLabel;
|
||||
private List<Dependency> dependencies;
|
||||
private Boolean required;
|
||||
private List<Language> language;
|
||||
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@XmlElement(name = "id")
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@XmlElement(name = "name")
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getExternalFieldId() {
|
||||
return externalFieldId;
|
||||
}
|
||||
|
||||
@XmlElement(name = "externalFieldId")
|
||||
public void setExternalFieldId(String externalFieldId) {
|
||||
this.externalFieldId = externalFieldId;
|
||||
}
|
||||
|
||||
public String getExternalFieldLabel() {
|
||||
return externalFieldLabel;
|
||||
}
|
||||
|
||||
@XmlElement(name = "externalFieldLabel")
|
||||
public void setExternalFieldLabel(String externalFieldLabel) {
|
||||
this.externalFieldLabel = externalFieldLabel;
|
||||
}
|
||||
|
||||
public List<Dependency> getDependencies() {
|
||||
return dependencies;
|
||||
}
|
||||
|
||||
@XmlElementWrapper
|
||||
@XmlElement(name = "dependency")
|
||||
public void setDependencies(List<Dependency> dependencies) {
|
||||
this.dependencies = dependencies;
|
||||
}
|
||||
|
||||
public Boolean getRequired() {
|
||||
return required;
|
||||
}
|
||||
|
||||
@XmlElement(name = "required")
|
||||
public void setRequired(Boolean required) {
|
||||
this.required = required;
|
||||
}
|
||||
|
||||
public String getQueryProperty() {
|
||||
return queryProperty;
|
||||
}
|
||||
|
||||
@XmlElement(name = "queryProperty")
|
||||
public void setQueryProperty(String queryProperty) {
|
||||
this.queryProperty = queryProperty;
|
||||
}
|
||||
|
||||
public UrlConfiguration getUrlConfig() {
|
||||
return urlConfig;
|
||||
}
|
||||
|
||||
@XmlElement(name = "urlConfig")
|
||||
public void setUrlConfig(UrlConfiguration urlConfig) {
|
||||
this.urlConfig = urlConfig;
|
||||
}
|
||||
|
||||
public List<Language> getLanguage() {
|
||||
return language;
|
||||
}
|
||||
|
||||
@XmlElementWrapper
|
||||
@XmlElement(name = "languageProperty")
|
||||
public void setLanguage(List<Language> language) {
|
||||
this.language = language;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,91 @@
|
|||
package eu.eudat.configurations.dynamicproject.entities;
|
||||
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import java.util.List;
|
||||
|
||||
public class Property {
|
||||
private String id;
|
||||
private String name;
|
||||
private String sourceUrl;
|
||||
private String queryProperty;
|
||||
private String externalFieldId;
|
||||
private String externalFieldLabel;
|
||||
private List<Dependency> dependencies;
|
||||
private Boolean required;
|
||||
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@XmlElement(name = "id")
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@XmlElement(name = "name")
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getSourceUrl() {
|
||||
return sourceUrl;
|
||||
}
|
||||
|
||||
@XmlElement(name = "sourceUrl")
|
||||
public void setSourceUrl(String sourceUrl) {
|
||||
this.sourceUrl = sourceUrl;
|
||||
}
|
||||
|
||||
public String getExternalFieldId() {
|
||||
return externalFieldId;
|
||||
}
|
||||
|
||||
@XmlElement(name = "externalFieldId")
|
||||
public void setExternalFieldId(String externalFieldId) {
|
||||
this.externalFieldId = externalFieldId;
|
||||
}
|
||||
|
||||
public String getExternalFieldLabel() {
|
||||
return externalFieldLabel;
|
||||
}
|
||||
|
||||
@XmlElement(name = "externalFieldLabel")
|
||||
public void setExternalFieldLabel(String externalFieldLabel) {
|
||||
this.externalFieldLabel = externalFieldLabel;
|
||||
}
|
||||
|
||||
public List<Dependency> getDependencies() {
|
||||
return dependencies;
|
||||
}
|
||||
|
||||
@XmlElementWrapper
|
||||
@XmlElement(name = "dependency")
|
||||
public void setDependencies(List<Dependency> dependencies) {
|
||||
this.dependencies = dependencies;
|
||||
}
|
||||
|
||||
public Boolean getRequired() {
|
||||
return required;
|
||||
}
|
||||
|
||||
@XmlElement(name = "required")
|
||||
public void setRequired(Boolean required) {
|
||||
this.required = required;
|
||||
}
|
||||
|
||||
public String getQueryProperty() {
|
||||
return queryProperty;
|
||||
}
|
||||
|
||||
@XmlElement(name = "queryProperty")
|
||||
public void setQueryProperty(String queryProperty) {
|
||||
this.queryProperty = queryProperty;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue