software-versions-processor.../src/main/java/org/gcube/common/software/model/SoftwareConfig.java

79 lines
2.1 KiB
Java

package org.gcube.common.software.model;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.LinkedHashMap;
import java.util.Map;
import org.gcube.com.fasterxml.jackson.annotation.JsonAnyGetter;
import org.gcube.com.fasterxml.jackson.annotation.JsonAnySetter;
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
import org.gcube.com.fasterxml.jackson.annotation.JsonProperty;
import org.gcube.com.fasterxml.jackson.annotation.JsonSetter;
import org.gcube.com.fasterxml.jackson.databind.JsonNode;
import org.gcube.com.fasterxml.jackson.databind.node.ObjectNode;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public class SoftwareConfig {
public static final String EXPORT_FILENAME_PROPERTY_NAME = "export_filename";
@JsonProperty(EXPORT_FILENAME_PROPERTY_NAME)
protected String exportFileName;
protected Map<String, JsonNode> additionalProperties;
@JsonIgnore
protected ObjectNode originalJson;
public SoftwareConfig() {
this.additionalProperties = new LinkedHashMap<>();
}
@JsonIgnore
public String getExportFileName() {
if(exportFileName==null) {
if(additionalProperties.containsKey(EXPORT_FILENAME_PROPERTY_NAME)) {
exportFileName = additionalProperties.get(EXPORT_FILENAME_PROPERTY_NAME).asText();
}else {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
exportFileName = simpleDateFormat.format(Calendar.getInstance().getTime());
}
}
return exportFileName;
}
@JsonSetter(EXPORT_FILENAME_PROPERTY_NAME)
public void setExportFileName(String exportFileName) {
this.exportFileName = exportFileName;
}
@JsonIgnore
public ObjectNode getOriginalJson() {
return originalJson;
}
@JsonIgnore
public void setOriginalJson(ObjectNode originalJson) {
this.originalJson = originalJson;
}
@JsonAnyGetter
public Map<String, JsonNode> getAdditionalProperties() {
return additionalProperties;
}
@JsonAnySetter
public void addAdditionalProperty(String key, JsonNode value) {
this.additionalProperties.put(key, value);
}
@JsonIgnore
public JsonNode getAdditionalProperty(String key) {
return this.additionalProperties.get(key);
}
}