All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.geojsf.web.rest.area.GeoJsfAreaBasinRest Maven / Gradle / Ivy

The newest version!
package org.geojsf.web.rest.area;

import net.sf.ahtutils.exception.ejb.UtilsConstraintViolationException;
import net.sf.ahtutils.exception.ejb.UtilsNotFoundException;
import net.sf.ahtutils.factory.xml.status.XmlTypeFactory;
import net.sf.ahtutils.interfaces.facade.UtilsFacade;
import net.sf.ahtutils.interfaces.model.status.UtilsDescription;
import net.sf.ahtutils.interfaces.model.status.UtilsLang;
import net.sf.ahtutils.interfaces.model.status.UtilsStatus;
import net.sf.ahtutils.monitor.DataUpdateTracker;
import net.sf.ahtutils.web.rest.AbstractUtilsRest;
import net.sf.ahtutils.xml.aht.Aht;
import net.sf.ahtutils.xml.sync.DataUpdate;

import org.geojsf.factory.ejb.area.EjbBasinFactory;
import org.geojsf.interfaces.model.area.GeoBasin;
import org.geojsf.interfaces.rest.area.basin.surface.GeoJsfAreaBasinSurfaceRestExport;
import org.geojsf.interfaces.rest.area.basin.surface.GeoJsfAreaBasinSurfaceRestImport;
import org.geojsf.model.xml.area.Basin;
import org.geojsf.model.xml.area.Areas;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class GeoJsfAreaBasinRest ,MODEL extends UtilsStatus>
	extends AbstractUtilsRest
	implements GeoJsfAreaBasinSurfaceRestExport,GeoJsfAreaBasinSurfaceRestImport
{
	final static Logger logger = LoggerFactory.getLogger(GeoJsfAreaBasinRest.class);

	private final Class cM;
	private final Class cB;
	
	private EjbBasinFactory efBasin;
	
	public GeoJsfAreaBasinRest(UtilsFacade fUtils, final String[] defaultLangs, final Class cL, final Class cD, final Class cB, final Class cM)
	{
		super(fUtils,defaultLangs,cL,cD);
		this.cB=cB;
		this.cM=cM;
		efBasin = EjbBasinFactory.factory(cL, cD, cB);
	}
	
	public static ,MODEL extends UtilsStatus>
		GeoJsfAreaBasinRest
		factory(UtilsFacade fGeoMonitoring, final String[] defaultLangs, final Class cL, final Class cD,final Class cB,final Class cM)
	{
		return new GeoJsfAreaBasinRest(fGeoMonitoring,defaultLangs,cL,cD,cB,cM);
	}

	//Model
	@Override public Aht exportGeoJsfWaterSurfaceBasinModel(){return exportStatus(cM);}
	@Override public DataUpdate importGeoJsfAreaBasinSurfaceModel(Aht models) {return importStatus(cM,null,models);}
	
	//Surface
	@Override public DataUpdate importGeoJsfAreaBasinSurface(Areas basins){return importBasins(basins);}
	@Override public Areas exportGeoJsfWaterSurfaceBasins() {return exportBasins();}
	
	
	//Implementation
	private Areas exportBasins()
	{
		logger.warn("NYI");
		return null;
	}

	private DataUpdate importBasins(Areas basins)
	{
		DataUpdateTracker dut = new DataUpdateTracker(true);
		dut.setType(XmlTypeFactory.build(cB.getName(),"DB Import"));
		for(Basin basin : basins.getBasin())
		{
			try
			{
				MODEL model = fUtils.fByCode(cM,basin.getModel().getCode());
				BASIN ejb = efBasin.build(basin, model);
				ejb = fUtils.persist(ejb);
				efLang.persistMissingLangs(fUtils,defaultLangs,ejb);
				efDescription.persistMissingLangs(fUtils,defaultLangs,ejb);
				dut.success();
				
			}
			catch (UtilsNotFoundException e){{dut.fail(e,true);}}
			catch (UtilsConstraintViolationException e) {dut.fail(e,true);}
		}
		return dut.toDataUpdate();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy