package org.geosdi.geoplatform.core.delegate.impl.project.function;
import org.geosdi.geoplatform.core.binding.IGPLayerBinder;
import org.geosdi.geoplatform.core.dao.GPLayerDAO;
import org.geosdi.geoplatform.core.model.GPFolder;
import org.geosdi.geoplatform.core.model.GPLayer;
import org.geosdi.geoplatform.core.model.GPProject;
import java.util.function.Function;
/**
* @author Vito Salvia - CNR IMAA geoSDI Group
* @email vito.salvia@gmail.com
*/
public class GPLayerFunction implements Function<GPLayer,GPLayer>{
private GPProject projectCloned;
private GPLayerDAO layerDAO;
private GPFolder folder;
public GPLayerFunction(GPProject projectCloned,GPLayerDAO layerDAO,GPFolder folder){
this.projectCloned = projectCloned;
this.layerDAO = layerDAO;
this.folder = folder;
}
/**
* Applies this function to the given argument.
*
* @param gpLayer the function argument
* @return the function result
*/
@Override
public GPLayer apply(GPLayer gpLayer) {
try {
GPLayer gpLayerCloned = IGPLayerBinder.GPLayerBinder.newGPFolderBinder().withFrom(gpLayer).withFolderCloned(folder).withProjectCloned(projectCloned).bind();
layerDAO.persist(gpLayerCloned);
return gpLayerCloned;
} catch (Exception e) {
e.printStackTrace();
throw new IllegalStateException(e);
}
}
}