roaddefectmanagerimpl.java

来自「Java的框架」· Java 代码 · 共 319 行

JAVA
319
字号
package mcaps.apps.prrm.roaddefect.service.impl;

import java.util.Date;
import java.util.Iterator;
import java.util.List;

import mcap.core.logging.Log;
import mcap.core.map.service.WfsTransactionService;
import mcap.core.map.util.MapConstants;
import mcap.core.map.util.MapFeature;
import mcap.core.map.util.WfsTransaction;
import mcap.core.map.util.WfsTransactionFactory;
import mcaps.apps.prrm.roaddefect.dao.RoadDAO;
import mcaps.apps.prrm.roaddefect.dao.RoadDefectDAO;
import mcaps.apps.prrm.roaddefect.model.Road;
import mcaps.apps.prrm.roaddefect.model.RoadDefect;
import mcaps.apps.prrm.roaddefect.model.RoadDefectStatus;
import mcaps.apps.prrm.roaddefect.service.RoadDefectManager;
import mcaps.apps.prrm.roaddefect.util.RoadDefectFeature;
import mcaps.apps.prrm.roadinspection.dao.RoadInspectionDAO;
import mcaps.apps.prrm.roadinspection.model.RoadInspection;
import mcaps.apps.prrm.task.dao.TaskDAO;
import mcaps.apps.prrm.task.model.Status;
import mcaps.apps.prrm.task.model.Task;
import mcaps.apps.prrm.task.service.TaskManager;

/**
 * Implementation of RoadDefectManager interface.
 * @author jov
 * @date Dec 7, 2005
 * @version 1.0.1.0
 */
public class RoadDefectManagerImpl implements RoadDefectManager {

	private final static String className="mcaps.apps.prrm.roaddefect.service.impl.RoadDefectManagerImpl";
	private RoadDefectDAO roadDefectDAO;
	private WfsTransactionFactory wfsTransactionFactory;
	private WfsTransactionService wfsTransactionService;
	private TaskDAO taskDAO;
	private RoadInspectionDAO roadInspectionDAO;
	private RoadDAO roadDAO;
	//-------------------------------------------------------------------------
	// Setter methods for dependency injection
	//-------------------------------------------------------------------------
	
	/**
	 * @return Returns the taskManager.
	 */
	public TaskDAO getTaskDAO() {
		return taskDAO;
	}


	/**
	 * @param taskManager The taskManager to set.
	 */
	public void setTaskDAO(TaskDAO taskDAO) {
		this.taskDAO = taskDAO;
	}
	
	/* (non-Javadoc)
	 * @see mcaps.apps.prrm.roaddefect.service.RoadDefectManager#setRoadDefectDAO(mcaps.apps.prrm.roaddefect.dao.RoadDefectDAO)
	 */
	public void setRoadDefectDAO(RoadDefectDAO dao){
		this.roadDefectDAO = dao;
	}
	
	/**
	 * @return Returns the roadDefectManager.
	 */
	public RoadDefectDAO getRoadDefectDAO() {
		return roadDefectDAO;
	}


	public void setRoadInspectionDAO (RoadInspectionDAO roadInspectionDAO) {
		this.roadInspectionDAO = roadInspectionDAO;
	}	

	
	public RoadInspectionDAO getRoadInspectionDAO()
	{
		return roadInspectionDAO;
	}
	
	/* (non-Javadoc)
	 * @see mcaps.apps.prrm.roaddefect.service.RoadDefectManager#setWfsTransaction(mcap.core.map.service.WfsTransactionService)
	 */
	public void setWfsTransactionService (WfsTransactionService wfsTransactionService) {
		this.wfsTransactionService = wfsTransactionService;
	}

	
	/* (non-Javadoc)
	 * @see mcaps.apps.prrm.roaddefect.service.RoadDefectManager#setWfsTransactionFactory(mcap.core.map.util.WfsTransactionFactory)
	 */
	public void setWfsTransactionFactory (
			WfsTransactionFactory wfsTransactionFactory) {
		this.wfsTransactionFactory = wfsTransactionFactory;
	}

	//-------------------------------------------------------------------------
	// Operation methods, implementing the RoadDefectManager interface
	//-------------------------------------------------------------------------

	
	/* (non-Javadoc)
	 * @see mcaps.apps.prrm.roaddefect.service.RoadDefectManager#getRoadDefect(java.lang.Integer)
	 */
	public RoadDefect getRoadDefect(Integer roadDefectID) {
		return roadDefectDAO.getRoadDefect(roadDefectID);
	}

	/* (non-Javadoc)
	 * @see mcaps.apps.prrm.roaddefect.service.RoadDefectManager#getRoadDefects(mcaps.apps.prrm.roaddefect.model.RoadDefect)
	 */
	public List getRoadDefects(RoadDefect roadDefect) {
		return roadDefectDAO.getRoadDefects(roadDefect);
	}

	/* (non-Javadoc)
	 * @see mcaps.apps.prrm.roaddefect.service.RoadDefectManager#getAllRoadDefects()
	 */
	public List getAllRoadDefects() {
		return roadDefectDAO.getAllRoadDefects();
	}
	
	/* (non-Javadoc)
	 * @see mcaps.apps.prrm.roaddefect.service.RoadDefectManager#saveRoadDefect(mcaps.apps.prrm.roaddefect.model.RoadDefect)
	 */
	public void saveRoadDefect(RoadDefect roadDefect) throws Exception{
		Date date = new Date();
		boolean isNew = roadDefect.isNew();
		if (isNew){
			roadDefect.setStatus(RoadDefectStatus.DEFAULT);
			roadDefect.setCreationTime(date);
		}
		
		roadDefect.setLastModifiedTime(date);
		roadDefect.getContact().setLastModifiedTime(date);
		

		roadDefectDAO.saveRoadDefect(roadDefect);
		Log.info(className + " after saveRoadDefect()  ");
		MapFeature feature = new RoadDefectFeature(
				wfsTransactionFactory.getMapServerUrl(),
				roadDefect.getId(), roadDefect.getDefectType(), 
				roadDefect.getStatus(), roadDefect.getSeverity(),
				roadDefect.getCoordinates());
		WfsTransaction wfs = wfsTransactionFactory.getInstance(feature);
		if (isNew){
			if (!wfsTransactionService.doWFSTransaction(MapConstants.INSERT,wfs))
				throw new Exception("Road Defect WFS INSERT Transaction failed.");
		}else{
			if (!wfsTransactionService.doWFSTransaction(MapConstants.UPDATE,wfs))
				throw new Exception("Road Defect WFS UPDATE Transaction failed.");
		}
	}

	/* (non-Javadoc)
	 * @see mcaps.apps.prrm.roaddefect.service.RoadDefectManager#removeRoadDefect(java.lang.Integer)
	 */
	public void removeRoadDefect(RoadDefect roadDefect) throws Exception{
		roadDefectDAO.removeRoadDefect(roadDefect);
	/*	
		Task task = new Task();
		task.setRoadDefectId(roadDefect.getId());
		task=taskManager.getTasks(task);
		*/
		
		if(!roadDefect.getStatus().equals(RoadDefectStatus.CLOSED))
		{
			this.removeRoadDefectFromGeoServer(roadDefect);	
		}

		Task task=new Task();
		task.setRoadDefectId(roadDefect.getId());
		List tasks=taskDAO.getTasks(task);
		Iterator iter=tasks.iterator();
		while(iter.hasNext())
		{
			task=(Task)iter.next();
			taskDAO.removeTask(task);
		}
		
		RoadInspection roadInspection =new RoadInspection();
		roadInspection.setRoadDefectId(roadDefect.getId() );
		List roadInspections=roadInspectionDAO.getRoadInspections(roadInspection);
		iter=roadInspections.iterator();
		while(iter.hasNext())
		{
			roadInspection=(RoadInspection)iter.next();
			roadInspectionDAO.removeRoadInspection(roadInspection);
		}
		
		
	}
	
	/**
	 * Remove map data from geoserver
	 * @param roadDefect
	 * @throws Exception
	 */
	private void removeRoadDefectFromGeoServer(RoadDefect roadDefect) throws Exception
	{
		MapFeature feature = new RoadDefectFeature(
				wfsTransactionFactory.getMapServerUrl(),
				roadDefect.getId(), roadDefect.getDefectType(), 
				roadDefect.getStatus(), roadDefect.getSeverity(),
				roadDefect.getCoordinates());
		WfsTransaction wfs = wfsTransactionFactory.getInstance(feature);
		if (!wfsTransactionService.doWFSTransaction(MapConstants.DELETE,wfs))
			throw new Exception("Road Defect WFS DELETE Transaction failed.");
	}
	
	
	
	/* (non-Javadoc)
	 * @see mcaps.apps.prrm.roaddefect.service.RoadDefectManager#purgeRoadDefect(java.util.Date, java.util.Date)
	 */
	public int purgeRoadDefect(Date startLastModifiedTime, Date endLastModifiedTime){
		return roadDefectDAO.purgeRoadDefect(startLastModifiedTime,endLastModifiedTime);
	}

	/* (non-Javadoc)
	 * @see mcaps.apps.prrm.roaddefect.service.RoadDefectManager#copyRoadDefectToFile(java.util.Date, java.util.Date)
	 */
	public int copyRoadDefectToFile(Date startLastModifiedTime, Date endLastModifiedTime) throws Exception{
		return roadDefectDAO.copyRoadDefectToFile(startLastModifiedTime,endLastModifiedTime);
	}

	/* (non-Javadoc)
	 * @see mcaps.apps.prrm.roaddefect.service.RoadDefectManager#getRoadDefects(java.util.Date, java.util.Date)
	 */
	public List getClosedRoadDefects(Date startLastModifiedTime, Date endLastModifiedTime){
		return roadDefectDAO.getClosedRoadDefects(startLastModifiedTime,endLastModifiedTime);
	}

	/* (non-Javadoc)
	 * @see mcaps.apps.prrm.roaddefect.service.RoadDefectManager#openRoadDefect(java.lang.Integer)
	 */
	public void openRoadDefect(Integer roadDefectID) {
		roadDefectDAO.changeRoadDefectStatus(roadDefectID,RoadDefectStatus.OPEN);
	}

	/* (non-Javadoc)
	 * @see mcaps.apps.prrm.roaddefect.service.RoadDefectManager#closeRoadDefect(java.lang.Integer)
	 */
	public void closeRoadDefect(Integer roadDefectID) throws Exception {
		roadDefectDAO.changeRoadDefectStatus(roadDefectID,RoadDefectStatus.CLOSED);
		RoadDefect roadDefect=roadDefectDAO.getRoadDefect(roadDefectID);
		Task task=new Task();
		task.setRoadDefectId(roadDefectID);
		List tasks=taskDAO.getTasks(task);
		Iterator iter=tasks.iterator();
		while(iter.hasNext())
		{
			task=(Task)iter.next();
			task.setStatus(Status.CLOSED);
			taskDAO.saveTask(task);
		}
		
		//if close road defect, the road defect will be removed from geoserver
		this.removeRoadDefectFromGeoServer(roadDefect);
		
	}

	/* (non-Javadoc)
	 * @see mcaps.apps.prrm.roaddefect.service.RoadDefectManager#completeRoadDefect(java.lang.Integer)
	 */
	public void completeRoadDefect(Integer roadDefectID) {
		roadDefectDAO.changeRoadDefectStatus(roadDefectID,RoadDefectStatus.DONE);
	}
	
	/* (non-Javadoc)
	 * @see mcaps.apps.prrm.roaddefect.service.RoadDefectManager#assignRoadDefectForInspection(java.lang.Integer)
	 */
	public void assignRoadDefectForInspection(Integer roadDefectID){
		roadDefectDAO.changeRoadDefectStatus(roadDefectID,RoadDefectStatus.ASSIGNED_INSP);
	}

	/* (non-Javadoc)
	 * @see mcaps.apps.prrm.roaddefect.service.RoadDefectManager#assignRoadDefectForInspection(java.lang.Integer)
	 */
	public void setRoadDefectForDone(Integer roadDefectID){
		roadDefectDAO.changeRoadDefectStatus(roadDefectID,RoadDefectStatus.DONE);
	}	
	
	
	/* (non-Javadoc)
	 * @see mcaps.apps.prrm.roaddefect.service.RoadDefectManager#assignRoadDefectForRepair(java.lang.Integer)
	 */
	public void assignRoadDefectForRepair(Integer roadDefectID){
		roadDefectDAO.changeRoadDefectStatus(roadDefectID,RoadDefectStatus.ASSIGNED_REP);
	}

	/* (non-Javadoc)
	 * @see mcaps.apps.prrm.roaddefect.service.RoadDefectManager#assignRoadDefectForInspection(java.lang.Integer)
	 */
	public void setRoadDefectForInspectioned(Integer roadDefectID){
		roadDefectDAO.changeRoadDefectStatus(roadDefectID,RoadDefectStatus.INSPECTED);
	}


	public RoadDAO getRoadDAO() {
		return roadDAO;
	}


	public void setRoadDAO(RoadDAO roadDAO) {
		this.roadDAO = roadDAO;
	}


	
	
	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?