/*
* 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.elise.master.RESTImp;
import at.ac.tuwien.dsg.cloud.elise.master.QueryManagement.neo4jAccess.ContractTemplateRepository;
import at.ac.tuwien.dsg.cloud.elise.master.QueryManagement.neo4jAccess.ContractTermRepository;
import at.ac.tuwien.dsg.cloud.elise.master.QueryManagement.neo4jAccess.ContractTermTypeRepository;
import at.ac.tuwien.dsg.cloud.elise.master.QueryManagement.neo4jAccess.ScriptRepository;
import at.ac.tuwien.dsg.cloud.elise.master.QueryManagement.utils.EliseConfiguration;
import at.ac.tuwien.dsg.cloud.elise.master.RESTService.EliseExtraCDGRepository;
import at.ac.tuwien.dsg.cloud.elise.model.extra.contract.ContractTemplate;
import at.ac.tuwien.dsg.cloud.elise.model.extra.contract.ContractTerm;
import at.ac.tuwien.dsg.cloud.elise.model.extra.contract.ContractTermType;
import at.ac.tuwien.dsg.cloud.elise.model.extra.contract.Script;
import java.util.Set;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
/**
*
* @author peter
*/
public class EliseExtraCDGRepositoryImpl implements EliseExtraCDGRepository {
Logger logger = EliseConfiguration.logger;
@Autowired
ScriptRepository scriptRepo;
@Autowired
ContractTermTypeRepository contracttermtypeRepo;
@Autowired
ContractTermRepository contracttermRepo;
@Autowired
ContractTemplateRepository contracttemplateRepo;
@Override
public Script readScript(String name) {
return scriptRepo.findByName(name);
}
@Override
public Set<Script> readAllScripts() {
return scriptRepo.listScripts();
}
@Override
public String saveScript(Script script) {
if (scriptRepo == null) {
logger.error("Cannot load ScriptRepository !");
return null;
}
Script existingScript = scriptRepo.findByName(script.getName());
if (existingScript == null) {
existingScript = script;
} else {
if (!(script.getCode() == null)) {
existingScript.setCode(script.getCode());
}
if (!(script.getVersion() == null)) {
existingScript.setVersion(script.getVersion());
}
}
logger.debug("Prepare to write script: name=" + existingScript.getName());
Script s = scriptRepo.save(existingScript);
return "Saved the script to graph with name: " + s.getName();
}
@Override
public void deleteScript(String name) {
Script s = scriptRepo.findByName(name);
if (s != null) {
scriptRepo.delete(s);
}
}
@Override
public ContractTerm readContractTerm(String name) {
return contracttermRepo.findByName(name);
}
@Override
public Set<ContractTerm> readAllContractTerms() {
return contracttermRepo.listContractTerms();
}
@Override
public String saveContractTerm(ContractTerm ct) {
if (contracttermRepo == null) {
logger.error("Cannot load ContractTermRepository !");
return null;
}
ContractTerm existingct = contracttermRepo.findByName(ct.getName());
if (existingct == null) {
existingct = ct;
} else {
if (!(ct.getType() == null)){
existingct.setType(ct.getType());
}
if (!(ct.getConstraints() == null)){
existingct.setConstraints(ct.getConstraints());
}
}
logger.debug("Prepare to write contractterm: name=" + ct.getName());
ContractTerm c = contracttermRepo.save(existingct);
return "Saved the contractterm to graph with id: " + c.getName();
}
@Override
public void deleteContractTerm(String name) {
ContractTerm c = contracttermRepo.findByName(name);
if (c != null) {
contracttermRepo.delete(c);
}
}
@Override
public ContractTermType readContractTermType(String name) {
return contracttermtypeRepo.findByName(name);
}
@Override
public Set<ContractTermType> readAllContractTermTypes() {
return contracttermtypeRepo.listContractTermTypes();
}
@Override
public String saveContractTermType(ContractTermType ctt) {
if (contracttermtypeRepo == null) {
logger.error("Cannot load ContractTermTypeRepository !");
return null;
}
ContractTermType existingctt = contracttermtypeRepo.findByName(ctt.getName());
if (existingctt == null) {
existingctt = ctt;
} else {
if (!(ctt.getDescription() == null)){
existingctt.setDescription(ctt.getDescription());
}
}
logger.debug("Prepare to write contracttermtype: name=" + existingctt.getName());
ContractTermType c = contracttermtypeRepo.save(existingctt);
return "Saved the contracttermtype to graph with name: " + c.getName();
}
@Override
public void deleteContractTermType(String name) {
//this.contracttermtypeRepo.deleteContractTermTypeCompletelyByID(name);
ContractTermType c = contracttermtypeRepo.findByName(name);
if (c != null) {
contracttermtypeRepo.delete(c);
}
}
@Override
public ContractTemplate readContractTemplate(String name) {
return contracttemplateRepo.findByName(name);
}
@Override
public Set<ContractTemplate> readAllContractTemplates() {
return contracttemplateRepo.listContractTemplates();
}
@Override
public String saveContractTemplate(ContractTemplate ct) {
if (contracttemplateRepo == null) {
logger.error("Cannot load ContractTemplateRepository !");
return null;
}
ContractTemplate existingct = contracttemplateRepo.findByName(ct.getName());
if (existingct == null) {
existingct = ct;
} else {
if (!(ct.getTerms() == null)){
existingct.setTerms(ct.getTerms());
}
}
logger.debug("Prepare to write contracttemplate: name=" + ct.getName());
ContractTemplate c = contracttemplateRepo.save(existingct);
return "Saved the contracttemplate to graph with id: " + c.getName();
}
@Override
public void deleteContractTemplate(String name) {
ContractTemplate c = contracttemplateRepo.findByName(name);
if (c != null) {
contracttemplateRepo.delete(c);
}
}
@Override
public String health() {
System.out.println("ExtraCDG is up");
return EliseConfiguration.getEliseID();
}
}