⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mapcomposition.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JAVA
字号:
package com.esri.solutions.jitk.services.personalization;

import java.lang.reflect.InvocationTargetException;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;

import javax.xml.rpc.ServiceException;
import javax.xml.rpc.server.ServletEndpointContext;

import org.apache.commons.beanutils.BeanUtils;

import com.esri.solutions.jitk.personalization.dao.Criteria;
import com.esri.solutions.jitk.personalization.dao.IMapCompositionDAO;
import com.esri.solutions.jitk.personalization.dao.InfoRecord;
import com.esri.solutions.jitk.personalization.dao.MapCompositionInfoRecord;
import com.esri.solutions.jitk.personalization.dao.MapCompositionRecord;
import com.esri.solutions.jitk.personalization.dao.PageInfo;
import com.esri.solutions.jitk.personalization.dao.PersonalizationDAOException;
import com.esri.solutions.jitk.personalization.data.beans.v1.MapCompositionType;
import com.esri.solutions.jitk.services.common.ServicesException;
import com.esri.solutions.jitk.services.personalization.data.MapCompositionData;

/**
 * Web service endpoint for the User service.
 * <p>
 * This class utilizes an {@link IMapCompositionDAO} to perform the CRUD-type
 * operations against the user datastore. The DAO is initialized via the
 * {@link #onInit()} method, which retrieves a bean named
 * {@code mapCompositionDAO} from the Spring configuration.
 * </p>
 * <p>
 * If {@code mapCompositionDAO} is not configured properly in the Spring
 * configuration file, this service will never initialize, and thus, will not be
 * available.
 * </p>
 */
public class MapComposition extends PersonalizationService implements
		IMapCompositionService {

	/**
	 * The DAO object that is used to access the query datastore and perform the
	 * actual CRUD operations.
	 */
	private IMapCompositionDAO _dao = null;

	/**
	 * Default constructor
	 */
	public MapComposition() {

	}

	/* (non-Javadoc)
	 * @see com.esri.solutions.jitk.services.personalization.PersonalizationService#onInit()
	 */
	@Override
	protected void onInit() throws ServiceException {
		super.onInit();

		Object o = this.getWebApplicationContext().getBean("mapCompositionDAO");
		if (o instanceof IMapCompositionDAO && o != null) {
			IMapCompositionDAO dao = (IMapCompositionDAO) o;
			setDAO(dao);
		} else {
			throw new ServiceException(
					"userDAO is improperly configured and cannot be set on the Query service");
		}
	}

	/* (non-Javadoc)
	 * @see com.esri.solutions.jitk.services.personalization.PersonalizationService#checkForId(java.lang.String)
	 */
	@Override
	protected boolean checkForId(String id) throws ServicesException {
		MapCompositionData d = selectOne(id);
		return (d!=null)&&(d.getData()!=null);
	}
	/**
	 * Sets the {@link IMapCompositionDAO} instance that is used to access and
	 * manipulate the map composition datastore.
	 * 
	 * @param dao
	 *            {@link IMapCompositionDAO} instance, which cannot be null.
	 */
	public void setDAO(IMapCompositionDAO dao) {
		if (dao == null) {
			throw new NullPointerException("dao cannot be null");
		}
		_dao = dao;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.esri.solutions.jitk.services.personalization.IMapCompositionService#getDAO()
	 */
	public IMapCompositionDAO getDAO() {
		return _dao;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.esri.solutions.jitk.services.personalization.IMapCompositionService#get(java.lang.String)
	 */
	public MapCompositionData selectOne(String id) throws ServicesException {
		if (_dao == null) {
			throw new IllegalStateException("DAO has not yet been set.");
		}
		if (id == null) {
			throw new NullPointerException("id cannot be null");
		}
		MapCompositionRecord original = null;
		MapCompositionData data = null;
		try {
			original = _dao.selectOne(id);
			data = createData(original);
		} catch (IllegalAccessException e) {
			throw new ServicesException(e);
		} catch (InvocationTargetException e) {
			throw new ServicesException(e);
		} catch (PersonalizationDAOException e) {
			throw new ServicesException(e);
		}
		return data;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.esri.solutions.jitk.services.personalization.IMapCompositionService#getAll(com.esri.solutions.jitk.personalization.dao.Criteria)
	 */
	public List<MapCompositionData> selectAll(Criteria criteria)
			throws ServicesException {
		if (_dao == null) {
			throw new IllegalStateException("DAO has not yet been set.");
		}
		if (criteria == null) {
			throw new NullPointerException("criteria cannot be null");
		}
		List<MapCompositionInfoRecord> originalResults = new ArrayList<MapCompositionInfoRecord>();
		List<MapCompositionData> convertedResults = new ArrayList<MapCompositionData>();

		try {
			originalResults = _dao.selectAll(criteria);
			for (MapCompositionInfoRecord record : originalResults) {
				MapCompositionData data = createData(record);
				convertedResults.add(data);
			}
		} catch (IllegalAccessException e) {
			throw new ServicesException(e);
		} catch (InvocationTargetException e) {
			throw new ServicesException(e);
		} catch (PersonalizationDAOException e) {
			throw new ServicesException(e);
		}
		return convertedResults;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.esri.solutions.jitk.services.personalization.IMapCompositionService#getAllCount(com.esri.solutions.jitk.personalization.dao.Criteria)
	 */
	public int selectAllCount(Criteria criteria) throws ServicesException {
		if (_dao == null) {
			throw new IllegalStateException("DAO has not yet been set.");
		}
		if (criteria == null) {
			throw new NullPointerException("criteria cannot be null");
		}
		int results = -1;
		try {
			results = _dao.selectAllCount(criteria);
		} catch (PersonalizationDAOException e) {
			throw new ServicesException(e);
		}
		return results;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.esri.solutions.jitk.services.personalization.IMapCompositionService#getPage(com.esri.solutions.jitk.personalization.dao.Criteria,
	 *      com.esri.solutions.jitk.personalization.dao.PageInfo)
	 */
	public List<MapCompositionData> selectPage(Criteria criteria,
			PageInfo pageInfo) throws ServicesException {
		if (_dao == null) {
			throw new IllegalStateException("DAO has not yet been set.");
		}
		if (criteria == null) {
			throw new NullPointerException("criteria cannot be null");
		}
		if (pageInfo == null) {
			throw new NullPointerException("pageInfo cannot be null");
		}
		List<MapCompositionInfoRecord> originalResults = new ArrayList<MapCompositionInfoRecord>();
		List<MapCompositionData> convertedResults = new ArrayList<MapCompositionData>();

		try {
			originalResults = _dao.selectPage(criteria, pageInfo);
			for (MapCompositionInfoRecord record : originalResults) {
				MapCompositionData data = createData(record);
				convertedResults.add(data);
			}
		} catch (IllegalAccessException e) {
			throw new ServicesException(e);
		} catch (InvocationTargetException e) {
			throw new ServicesException(e);
		} catch (PersonalizationDAOException e) {
			throw new ServicesException(e);
		}
		return convertedResults;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.esri.solutions.jitk.services.personalization.IMapCompositionService#remove(java.lang.String)
	 */
	public void delete(String id) throws ServicesException {
		if (_dao == null) {
			throw new IllegalStateException("DAO has not yet been set.");
		}

		if (id == null) {
			throw new NullPointerException("id cannot be null");
		}

		try {
			_dao.delete(id);
		} catch (PersonalizationDAOException e) {
			throw new ServicesException(e);
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.esri.solutions.jitk.services.personalization.IMapCompositionService#save()
	 */
	public void insert(MapCompositionData mapCompositionData)
			throws ServicesException {
		if (_dao == null) {
			throw new IllegalStateException("DAO has not yet been set.");
		}
		if (mapCompositionData == null) {
			throw new NullPointerException("mapCompositionData cannot be null");
		}
		try {
			MapCompositionRecord mapCompositionRecord = createRecord(mapCompositionData);
			if(okToInsert(mapCompositionRecord.getId())) {
				_dao.insert(mapCompositionRecord);
			} else {
				throw new ServicesException(MessageFormat.format(ERROR_ID_ALREADY_EXISTS,"Map Composition",mapCompositionRecord.getId()));
			}
		} catch (IllegalAccessException e) {
			throw new ServicesException(e);
		} catch (InvocationTargetException e) {
			throw new ServicesException(e);
		} catch (PersonalizationDAOException e) {
			throw new ServicesException(e);
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.esri.solutions.jitk.services.personalization.IMapCompositionService#save()
	 */
	public void update(MapCompositionData mapCompositionData)
			throws ServicesException {
		if (_dao == null) {
			throw new IllegalStateException("DAO has not yet been set.");
		}
		if (mapCompositionData == null) {
			throw new NullPointerException("mapCompositionData cannot be null");
		}
		try {
			MapCompositionRecord mapCompositionRecord = createRecord(mapCompositionData);
			_dao.update(mapCompositionRecord);
		} catch (IllegalAccessException e) {
			throw new ServicesException(e);
		} catch (InvocationTargetException e) {
			throw new ServicesException(e);
		} catch (PersonalizationDAOException e) {
			throw new ServicesException(e);
		}
	}

	/**
	 * Converts a {@link InfoRecord} into an {@link MapCompositionData}
	 * 
	 * @param record
	 *            The {@link InfoRecord} to convert. {@code data} can be
	 *            {@code null}, in which case an new, empty
	 *            {@link MapCompositionData} will be returned.
	 * @return {@link MapCompositionData} representation of the
	 *         {@link InfoRecord}
	 * @throws IllegalAccessException
	 *             if an IllegalAccessException occurs when the bean properties
	 *             are being copied
	 * @throws InvocationTargetException
	 *             if an InvocationTargetException occurs when the bean
	 *             properties are being copied
	 */
	private MapCompositionData createData(MapCompositionInfoRecord record)
			throws IllegalAccessException, InvocationTargetException {
		MapCompositionData data = new MapCompositionData();
		if(record != null) {
			BeanUtils.copyProperties(data, record);
		}
		return data;

	}

	/**
	 * Creates a {@link MapCompositionRecord} based on the provided
	 * {@link MapCompositionData} and the name of the currently-logged-in user
	 * (retrieved from {@link ServletEndpointContext#getUserPrincipal()}.
	 * 
	 * @param data
	 *            The {@link MapCompositionData} to convert. {@code data} can be
	 *            {@code null}, in which case an new, empty
	 *            {@link MapCompositionRecord} will be returned.
	 * @return {@link MapCompositionRecord} representation of the
	 *         {@link MapCompositionData}
	 * @throws IllegalAccessException
	 *             if an IllegalAccessException occurs when the bean properties
	 *             are being copied
	 * @throws InvocationTargetException
	 *             if an InvocationTargetException occurs when the bean
	 *             properties are being copied
	 */
	private MapCompositionRecord createRecord(MapCompositionData data)
			throws IllegalAccessException, InvocationTargetException,
			ServicesException {
		MapCompositionRecord record = new MapCompositionRecord();
		if (data != null) {
			MapCompositionType t = data.dataAsMapComposition();
			// Copy any matching properties from the MapCompositionData to the
			// MapCompositionRecord
			BeanUtils.copyProperties(record, data);
			// Copy any matching properties from the MapCompositionType to the
			// MapCompositionRecord
			BeanUtils.copyProperties(record, t);
		}
		/*
		 * Manually set the username. This is not contained in the
		 * MapCompositionData because we do not want to expose it via getters
		 * and setters.
		 */
		record.setCreator(getUsername());
		return record;

	}
}

⌨️ 快捷键说明

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