/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package at.ac.tuwien.dsg.cloud.salsa.domainmodels;
import at.ac.tuwien.dsg.cloud.salsa.domainmodels.types.ServiceCategory;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
//import org.codehaus.jackson.annotate.JsonAutoDetect;
//import org.codehaus.jackson.annotate.JsonMethod;
//import org.codehaus.jackson.map.ObjectMapper;
/**
* This class manages set of DomainEntity, which used for collecting both application and infrastructure information
* @author Duc-Hung LE
*/
public class DomainEntities {
protected Set<DomainEntity> entities;
public DomainEntities() {
}
public Set<DomainEntity> getEntities() {
return entities;
}
public DomainEntities(Set<DomainEntity> list){
this.entities = list;
}
public DomainEntities hasDomainEntity(DomainEntity d){
if (this.entities == null){
this.entities = new HashSet<>();
}
this.entities.add(d);
return this;
}
public DomainEntity findDomainEntityByCategory(ServiceCategory category){
if (entities == null){
return null;
}
for(DomainEntity e: entities){
if (e.getCategory().equals(category)){
return e;
}
}
return null;
}
public String toJson() {
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
try {
return mapper.writeValueAsString(this);
} catch (IOException ex) {
Logger.getLogger(DomainEntities.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
public static DomainEntities fromJson(String json) {
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
try {
return mapper.readValue(json, DomainEntities.class);
} catch (IOException ex) {
Logger.getLogger(DomainEntities.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
public DomainEntity findDomainInfoByName(String name) {
if (entities==null){
return null;
}
for (DomainEntity d : entities) {
if (d.getName().equals(name)) {
return d;
}
}
return null;
}
}