📄 mapcomposition.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 + -