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

📄 personalizationdataimpl.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package com.esri.solutions.jitk.personalization.data;

import com.esri.solutions.jitk.personalization.PersonalizationException;
import com.esri.solutions.jitk.personalization.dao.BookmarkInfoRecord;
import com.esri.solutions.jitk.personalization.dao.Criteria;
import com.esri.solutions.jitk.personalization.dao.IBookmarkDAO;
import com.esri.solutions.jitk.personalization.dao.IMapCompositionDAO;
import com.esri.solutions.jitk.personalization.dao.IPersonalizationDAOProfile;
import com.esri.solutions.jitk.personalization.dao.IQueryDAO;
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.dao.QueryInfoRecord;
import com.esri.solutions.jitk.personalization.data.beans.v1.CatalogQueryType;
import com.esri.solutions.jitk.personalization.data.beans.v1.FeatureQueryType;
import com.esri.solutions.jitk.personalization.data.beans.v1.QueryType;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;


/**
 * Implementation of {@link IPersonalizationData}.  This implementation
 * will need a {@link IPersonalizationDAOProfile} object in order
 * to get DAOs to persist objects.
 */
public class PersonalizationDataImpl implements IDataFactory,
    IPersonalizationData {
    /**
     * Logger to use to log messages from this class.
     */
    private static final Logger LOG = LogManager.getLogger(PersonalizationDataImpl.class);
    private static final String ERROR_NULL_PROFILE_OBJECT = "Object was not injected with IPersonalizationDAOProfile object.";
    private static final String ERROR_NULL_MAP_COMP_DAO_OBJECT = "IPersonalizationDAOProfile returned a null IMapCompositionDAO object.";
    private static final String ERROR_NULL_BOOKMARK_DAO_OBJECT = "IPersonalizationDAOProfile returned a null IBookmarkDAO object.";
    private static final String ERROR_NULL_CURRENT_USER_OBJECT = "Object was not injected with IUser object.";
    private static final String ERROR_INVALID_PAGE_NUMBER = "Page Number must be greater than or equal to 0.";
    private static final String ERROR_INVALID_PAGE_SIZE = "Page Size must be greater than or equal to 1.";
    private static final String ERROR_NULL_QUERY_DAO_OBJECT = "IPersonalizationDAOProfile returned a null IQueryDAO object.";
    private static final String WARN_UNABLE_TO_RETRIEVE_QUERY_MAP_COMP = "Unable to retrieve Map Composition Record [{0} for Query [{1}]";

    /**
     * Reference to the profile of DAO objects for persistence.
     */
    private IPersonalizationDAOProfile m_daoProfile;

    /**
     * user associated with the personalization data.
     */
    private IUser m_currentUser;

    /*
     * (non-Javadoc)
     * @see com.esri.solutions.jitk.personalization.data.IPersonalizationData#createBookmark()
     */
    public IBookmark createBookmark() throws PersonalizationException {
        if (m_daoProfile == null) {
            LOG.error(ERROR_NULL_PROFILE_OBJECT);
            throw new IllegalStateException(ERROR_NULL_PROFILE_OBJECT);
        }

        if (m_currentUser == null) {
            LOG.error(ERROR_NULL_CURRENT_USER_OBJECT);
            throw new IllegalStateException(ERROR_NULL_CURRENT_USER_OBJECT);
        }

        BookmarkImpl bookmark = new BookmarkImpl();
        bookmark.setNew(true);
        bookmark.setPersonalizationDAOProfile(m_daoProfile);
        bookmark.setCurrentUser(m_currentUser);

        return bookmark;
    }

    /*
     * (non-Javadoc)
     * @see com.esri.solutions.jitk.personalization.data.IPersonalizationData#createMapComposition()
     */
    public IMapComposition createMapComposition()
        throws PersonalizationException {
        if (m_daoProfile == null) {
            LOG.error(ERROR_NULL_PROFILE_OBJECT);
            throw new IllegalStateException(ERROR_NULL_PROFILE_OBJECT);
        }

        if (m_currentUser == null) {
            LOG.error(ERROR_NULL_CURRENT_USER_OBJECT);
            throw new IllegalStateException(ERROR_NULL_CURRENT_USER_OBJECT);
        }

        MapCompositionImpl mapComp = new MapCompositionImpl();
        mapComp.setNew(true);
        mapComp.setPersonalizationDAOProfile(m_daoProfile);
        mapComp.setDataFactory(this);
        mapComp.setCurrentUser(m_currentUser);
        return mapComp;
    }

    /*
     * (non-Javadoc)
     * @see com.esri.solutions.jitk.personalization.data.IPersonalizationData#createQuery()
     */
    public IQuery createQuery(IQuery.Type type) {
        if (m_daoProfile == null) {
            LOG.error(ERROR_NULL_PROFILE_OBJECT);
            throw new IllegalStateException(ERROR_NULL_PROFILE_OBJECT);
        }

        if (m_currentUser == null) {
            LOG.error(ERROR_NULL_CURRENT_USER_OBJECT);
            throw new IllegalStateException(ERROR_NULL_CURRENT_USER_OBJECT);
        }

        QueryImpl query = new QueryImpl();
        query.setNew(true);
        query.setPersonalizationDAOProfile(m_daoProfile);
        query.setCurrentUser(m_currentUser);
        query.setType(type);

        return query;
    }

    /*
     * (non-Javadoc)
     * @see com.esri.solutions.jitk.personalization.data.IPersonalizationData#createQuery(com.esri.solutions.jitk.personalization.data.beans.v1.QueryType)
     */
    public IQuery createQuery(QueryType queryType) {
        if (m_daoProfile == null) {
            LOG.error(ERROR_NULL_PROFILE_OBJECT);
            throw new IllegalStateException(ERROR_NULL_PROFILE_OBJECT);
        }

        if (m_currentUser == null) {
            LOG.error(ERROR_NULL_CURRENT_USER_OBJECT);
            throw new IllegalStateException(ERROR_NULL_CURRENT_USER_OBJECT);
        }

        QueryImpl query = new QueryImpl();
        query.setNew(true);
        query.setPersonalizationDAOProfile(m_daoProfile);
        query.setCurrentUser(m_currentUser);
        query.setQuery(queryType);

        if (queryType instanceof CatalogQueryType) {
            query.setType(IQuery.Type.CATALOG);
        } else if (queryType instanceof FeatureQueryType) {
            query.setType(IQuery.Type.FEATURE);
        }

        return query;
    }

    /*
     * (non-Javadoc)
     * @see com.esri.solutions.jitk.personalization.data.IPersonalizationData#getBookmark(java.util.UUID)
     */
    public IBookmark getBookmark(UUID id) throws PersonalizationException {
        if (id == null) {
            throw new NullPointerException();
        }

        if (m_daoProfile == null) {
            LOG.error(ERROR_NULL_PROFILE_OBJECT);
            throw new IllegalStateException(ERROR_NULL_PROFILE_OBJECT);
        }

        if (m_currentUser == null) {
            LOG.error(ERROR_NULL_CURRENT_USER_OBJECT);
            throw new IllegalStateException(ERROR_NULL_CURRENT_USER_OBJECT);
        }

        IBookmarkDAO dao = null;
        IBookmark bookmark = null;
        BookmarkInfoRecord rec = null;

        try {
            dao = m_daoProfile.getBookmarkDAO();

            if (dao == null) {
                LOG.error(ERROR_NULL_BOOKMARK_DAO_OBJECT);
                throw new IllegalArgumentException(ERROR_NULL_BOOKMARK_DAO_OBJECT);
            }

            rec = dao.selectOne(id.toString());
            bookmark = createBookmark(rec);

            return bookmark;
        } catch (PersonalizationDAOException e) {
            throw new PersonalizationException(PersonalizationException.Code.RETRIEVE_DATA_ERROR,
                e);
        }
    }

    /*
     * (non-Javadoc)
     * @see com.esri.solutions.jitk.personalization.data.IPersonalizationData#getBookmarkCount()
     */
    public long getBookmarkCount() throws PersonalizationException {
        if (m_daoProfile == null) {
            LOG.error(ERROR_NULL_PROFILE_OBJECT);
            throw new IllegalStateException(ERROR_NULL_PROFILE_OBJECT);
        }

        if (m_currentUser == null) {
            LOG.error(ERROR_NULL_CURRENT_USER_OBJECT);
            throw new IllegalStateException(ERROR_NULL_CURRENT_USER_OBJECT);
        }

        try {
            IBookmarkDAO dao = m_daoProfile.getBookmarkDAO();

            if (dao == null) {
                LOG.error(ERROR_NULL_BOOKMARK_DAO_OBJECT);
                throw new IllegalArgumentException(ERROR_NULL_BOOKMARK_DAO_OBJECT);
            }

            Criteria criteria = null;
            criteria = new Criteria();
            criteria.setUser(m_currentUser.getId().getUsername());

            return dao.selectAllCount(criteria);
        } catch (PersonalizationDAOException e) {
            throw new PersonalizationException(PersonalizationException.Code.RETRIEVE_DATA_ERROR,
                e);
        }
    }

    /*
     * (non-Javadoc)
     * @see com.esri.solutions.jitk.personalization.data.IPersonalizationData#getBookmarks()
     */
    public List<IBookmark> getBookmarks() throws PersonalizationException {
        if (m_daoProfile == null) {
            LOG.error(ERROR_NULL_PROFILE_OBJECT);
            throw new IllegalStateException();
        }

        if (m_currentUser == null) {
            LOG.error(ERROR_NULL_CURRENT_USER_OBJECT);
            throw new IllegalStateException(ERROR_NULL_CURRENT_USER_OBJECT);
        }

        List<IBookmark> bookmarks = new ArrayList<IBookmark>();

        try {
            IBookmarkDAO dao = m_daoProfile.getBookmarkDAO();

            if (dao == null) {
                LOG.error(ERROR_NULL_BOOKMARK_DAO_OBJECT);
                throw new IllegalArgumentException(ERROR_NULL_BOOKMARK_DAO_OBJECT);
            }

            Criteria criteria = null;
            criteria = new Criteria();
            criteria.setUser(m_currentUser.getId().getUsername());

            List<BookmarkInfoRecord> records = dao.selectAll(criteria);

            if (records != null) {
                for (BookmarkInfoRecord record : records) {
                    bookmarks.add(createBookmark(record));
                }
            }

            return bookmarks;
        } catch (PersonalizationDAOException e) {
            throw new PersonalizationException(PersonalizationException.Code.RETRIEVE_DATA_ERROR,
                e);
        }
    }

    /*
     * (non-Javadoc)
     * @see com.esri.solutions.jitk.personalization.data.IPersonalizationData#getBookmarks(int, int)
     */
    public List<IBookmark> getBookmarks(int page, int pageSize)
        throws PersonalizationException {
        if (page < 0) {
            LOG.error(ERROR_INVALID_PAGE_NUMBER);
            throw new IllegalArgumentException(ERROR_INVALID_PAGE_NUMBER);
        }

        if (pageSize < 1) {
            LOG.error(ERROR_INVALID_PAGE_SIZE);
            throw new IllegalArgumentException(ERROR_INVALID_PAGE_SIZE);
        }

        if (m_daoProfile == null) {
            LOG.error(ERROR_NULL_PROFILE_OBJECT);
            throw new IllegalStateException(ERROR_NULL_PROFILE_OBJECT);
        }

        if (m_currentUser == null) {
            LOG.error(ERROR_NULL_CURRENT_USER_OBJECT);
            throw new IllegalStateException(ERROR_NULL_CURRENT_USER_OBJECT);
        }

        List<IBookmark> bookmarks = new ArrayList<IBookmark>();

        try {
            IBookmarkDAO dao = m_daoProfile.getBookmarkDAO();

            if (dao == null) {
                LOG.error(ERROR_NULL_BOOKMARK_DAO_OBJECT);
                throw new IllegalArgumentException(ERROR_NULL_BOOKMARK_DAO_OBJECT);
            }

            PageInfo pageInfo = new PageInfo();
            pageInfo.setPageIndex(page);

⌨️ 快捷键说明

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