package io.lumify.core.model.ontology;
import io.lumify.core.exception.LumifyException;
import io.lumify.core.model.properties.LumifyProperties;
import io.lumify.core.util.JSONUtil;
import org.securegraph.Authorizations;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class InMemoryConcept extends Concept {
private String title;
private String color;
private String displayName;
private String displayType;
private String titleFormula;
private String subtitleFormula;
private String timeFormula;
private String conceptIRI;
private List<String> addRelatedConceptWhiteList;
private byte[] glyphIcon;
private byte[] mapGlyphIcon;
private boolean userVisible = true;
private Boolean searchable;
private Boolean addable;
private Map<String, String> metadata = new HashMap<String, String>();
private List<String> intents = new ArrayList<>();
protected InMemoryConcept(String conceptIRI, String parentIRI) {
super(parentIRI, new ArrayList<OntologyProperty>());
this.conceptIRI = conceptIRI;
}
@Override
public String getIRI() {
return this.conceptIRI;
}
@Override
public String[] getIntents() {
return this.intents.toArray(new String[this.intents.size()]);
}
@Override
public void addIntent(String intent, Authorizations authorizations) {
this.intents.add(intent);
}
@Override
public String getTitle() {
return title;
}
@Override
public boolean hasGlyphIconResource() {
return glyphIcon != null;
}
@Override
public String getColor() {
return color;
}
@Override
public String getDisplayName() {
return displayName;
}
@Override
public String getDisplayType() {
return displayType;
}
@Override
public String getTitleFormula() {
return titleFormula;
}
@Override
public Boolean getSearchable() {
return searchable;
}
@Override
public String getSubtitleFormula() {
return this.subtitleFormula;
}
@Override
public String getTimeFormula() {
return this.timeFormula;
}
@Override
public boolean getUserVisible() {
return userVisible;
}
@Override
public Map<String, String> getMetadata() {
return this.metadata;
}
@Override
public List<String> getAddRelatedConceptWhiteList() {
return addRelatedConceptWhiteList;
}
@Override
public void setProperty(String name, Object value, Authorizations authorizations) {
if (LumifyProperties.COLOR.getPropertyName().equals(name)) {
this.color = (String) value;
} else if (LumifyProperties.DISPLAY_TYPE.getPropertyName().equals(name)) {
this.displayType = (String) value;
} else if (LumifyProperties.TITLE_FORMULA.getPropertyName().equals(name)) {
this.titleFormula = (String) value;
} else if (LumifyProperties.SUBTITLE_FORMULA.getPropertyName().equals(name)) {
this.subtitleFormula = (String) value;
} else if (LumifyProperties.TIME_FORMULA.getPropertyName().equals(name)) {
this.timeFormula = (String) value;
} else if (LumifyProperties.USER_VISIBLE.getPropertyName().equals(name)) {
this.userVisible = (Boolean) value;
} else if (LumifyProperties.GLYPH_ICON.getPropertyName().equals(name)) {
this.glyphIcon = (byte[]) value;
} else if (LumifyProperties.MAP_GLYPH_ICON.getPropertyName().equals(name)) {
this.mapGlyphIcon = (byte[]) value;
} else if (LumifyProperties.TITLE.getPropertyName().equals(name)) {
this.title = (String) value;
} else if (LumifyProperties.DISPLAY_NAME.getPropertyName().equals(name)) {
this.displayName = (String) value;
} else if (LumifyProperties.ADD_RELATED_CONCEPT_WHITE_LIST.getPropertyName().equals(name)) {
this.addRelatedConceptWhiteList = JSONUtil.toStringList(JSONUtil.parseArray((String) value));
} else if (LumifyProperties.SEARCHABLE.getPropertyName().equals(name)) {
if (value instanceof Boolean) {
this.searchable = (Boolean) value;
} else {
this.searchable = Boolean.parseBoolean((String) value);
}
} else if (LumifyProperties.ADDABLE.getPropertyName().equals(name)) {
if (value instanceof Boolean) {
this.addable = (Boolean) value;
} else {
this.addable = Boolean.parseBoolean((String) value);
}
} else {
metadata.put(name, value.toString());
}
}
@Override
public void removeProperty(String name, Authorizations authorizations) {
if (LumifyProperties.TITLE_FORMULA.getPropertyName().equals(name)) {
this.titleFormula = null;
} else if (LumifyProperties.SUBTITLE_FORMULA.getPropertyName().equals(name)) {
this.subtitleFormula = null;
} else if (LumifyProperties.TIME_FORMULA.getPropertyName().equals(name)) {
this.timeFormula = null;
} else {
throw new LumifyException("Remove not implemented for property " + name);
}
}
@Override
public byte[] getGlyphIcon() {
return glyphIcon;
}
@Override
public byte[] getMapGlyphIcon() {
return mapGlyphIcon;
}
public String getConceptIRI() {
return conceptIRI;
}
}