package de.cinovo.cloudconductor.server.rest.impl;
import de.cinovo.cloudconductor.api.interfaces.IDirectory;
import de.cinovo.cloudconductor.api.interfaces.IFile;
import de.cinovo.cloudconductor.api.model.ConfigFile;
import de.cinovo.cloudconductor.api.model.Directory;
import de.cinovo.cloudconductor.server.dao.*;
import de.cinovo.cloudconductor.server.model.*;
import de.cinovo.cloudconductor.server.rest.helper.AMConverter;
import de.cinovo.cloudconductor.server.rest.helper.MAConverter;
import de.taimos.restutils.RESTAssert;
import de.taimos.springcxfdaemon.JaxRsComponent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* Created by janweisssieker on 18.11.16.
*/
@JaxRsComponent
public class DirectoryImpl extends ImplHelper implements IDirectory {
@Autowired
private IDirectoryDAO ddir;
@Autowired
private IPackageDAO dpkg;
@Autowired
private IServiceDAO dservice;
@Autowired
private AMConverter amc;
@Autowired
private ITemplateDAO dtemplate;
@Override
@Transactional
public Directory[] get() {
Set<Directory> result = new HashSet<>();
for (EDirectory m : this.ddir.findList()) {
result.add(MAConverter.fromModel(m));
}
return result.toArray(new Directory[result.size()]);
}
@Transactional
public void save(String name, Directory directory) {
this.assertName(name, directory);
EDirectory cf = this.amc.toModel(directory);
if ((directory.getPkg() != null) && !directory.getPkg().isEmpty()) {
EPackage pkg = this.findByName(this.dpkg, directory.getPkg());
cf.setPkg(pkg);
} else {
cf.setPkg(null);
}
if ((directory.getDependentServices() != null) && !directory.getDependentServices().isEmpty()) {
List<EService> services = this.findByName(this.dservice, directory.getDependentServices());
cf.setDependentServices(services);
} else {
cf.setDependentServices(null);
}
this.ddir.save(cf);
}
@Override
@Transactional
public Directory get(String name) {
RESTAssert.assertNotEmpty(name);
EDirectory model = this.findByName(this.ddir, name);
return MAConverter.fromModel(model);
}
@Override
@Transactional
public void delete(String name) {
RESTAssert.assertNotEmpty(name);
EDirectory model = this.ddir.findByName(name);
this.assertModelFound(model);
this.ddir.delete(model);
}
@Override
@Transactional
public Directory[] getDirectories(String template) {
RESTAssert.assertNotEmpty(template);
Set<Directory> result = new HashSet<>();
ETemplate eTemplate = this.dtemplate.findByName(template);
if ((eTemplate != null) && (eTemplate.getDirectory() != null)) {
for (EDirectory m : eTemplate.getDirectory()) {
result.add(MAConverter.fromModel(m));
}
}
return result.toArray(new Directory[result.size()]);
}
}