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

📄 integratorgetrecords.java

📁 CRM源码This file describes some issues that should be implemented in future and how it should be imple
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
/*
 * Copyright 2006-2007 Queplix Corp.
 *
 * Licensed under the Queplix Public License, Version 1.1.1 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.queplix.com/solutions/commercial-open-source/queplix-public-license/
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package com.queplix.core.integrator;

import com.queplix.core.client.app.rpc.DisplayableException;
import com.queplix.core.client.app.vo.AccumulatedEntitiesRequestObject;
import com.queplix.core.client.app.vo.AccumulatedEntityDataResponse;
import com.queplix.core.client.app.vo.ClearEntityRequestObject;
import com.queplix.core.client.app.vo.CustomizeGridRequestObject;
import com.queplix.core.client.app.vo.DateFieldData;
import com.queplix.core.client.app.vo.EmailComposeRequestObject;
import com.queplix.core.client.app.vo.EntityData;
import com.queplix.core.client.app.vo.EntityDataResponseObject;
import com.queplix.core.client.app.vo.EntityDeleteRequestObject;
import com.queplix.core.client.app.vo.EntityIDRequestObject;
import com.queplix.core.client.app.vo.EntityReferenceData;
import com.queplix.core.client.app.vo.EntityReferenceDataRequest;
import com.queplix.core.client.app.vo.EntityReferenceOnDemandData;
import com.queplix.core.client.app.vo.EntityUpdateRequestObject;
import com.queplix.core.client.app.vo.EntityUpdateResponseObject;
import com.queplix.core.client.app.vo.FieldData;
import com.queplix.core.client.app.vo.FieldDataRequest;
import com.queplix.core.client.app.vo.FieldMeta;
import com.queplix.core.client.app.vo.FieldOnDemandData;
import com.queplix.core.client.app.vo.FieldType;
import com.queplix.core.client.app.vo.FormatDataRequestObject;
import com.queplix.core.client.app.vo.FormatDataResponseObject;
import com.queplix.core.client.app.vo.GetControlDataInformRequest;
import com.queplix.core.client.app.vo.GetControlInformOnDemandData;
import com.queplix.core.client.app.vo.GetRecordsDataInformRequest;
import com.queplix.core.client.app.vo.GetRecordsInformOnDemandData;
import com.queplix.core.client.app.vo.GridData;
import com.queplix.core.client.app.vo.HistoryDataRequest;
import com.queplix.core.client.app.vo.HistoryOnDemandData;
import com.queplix.core.client.app.vo.InFormDataRequest;
import com.queplix.core.client.app.vo.InFormGridOnDemandData;
import com.queplix.core.client.app.vo.InFormGridType;
import com.queplix.core.client.app.vo.ListBoxOnDemandData;
import com.queplix.core.client.app.vo.ListboxDataRequest;
import com.queplix.core.client.app.vo.MemoFieldData;
import com.queplix.core.client.app.vo.MoreDataResponseObject;
import com.queplix.core.client.app.vo.MultiselectDataRequest;
import com.queplix.core.client.app.vo.MultiselectOnDemandData;
import com.queplix.core.client.app.vo.NewEntityRequestObject;
import com.queplix.core.client.app.vo.ParseDateRequestObject;
import com.queplix.core.client.app.vo.ParseDateResponseObject;
import com.queplix.core.client.app.vo.PrintFormRequestObject;
import com.queplix.core.client.app.vo.PrintGridRequestObject;
import com.queplix.core.client.app.vo.RecordFilter;
import com.queplix.core.client.app.vo.RowData;
import com.queplix.core.client.app.vo.SavedSearchDeleteRequestObject;
import com.queplix.core.client.app.vo.SavedSearchObject;
import com.queplix.core.client.app.vo.SearchGridRecordsResponseObject;
import com.queplix.core.client.app.vo.SearchInformOnDemandData;
import com.queplix.core.client.app.vo.SearchInformRequest;
import com.queplix.core.client.app.vo.SubsetData;
import com.queplix.core.client.app.vo.SubsetItemMeta;
import com.queplix.core.client.app.vo.SubsetMeta;
import com.queplix.core.client.app.vo.TextboxFieldData;
import com.queplix.core.integrator.entity.BoundFormsOperationsHelper;
import com.queplix.core.integrator.entity.EntityFacade;
import com.queplix.core.integrator.entity.EntityOperationsHelper;
import com.queplix.core.integrator.entity.EntitySerializeHelper;
import com.queplix.core.integrator.entity.EntityViewHelper;
import com.queplix.core.integrator.entity.IntegratedRecord;
import com.queplix.core.integrator.entity.IntegratedRecordSet;
import com.queplix.core.integrator.entity.RecordDoesntExistsException;
import com.queplix.core.integrator.entity.RequestProperties;
import com.queplix.core.integrator.security.LogonSession;
import com.queplix.core.integrator.security.SecurityHelper;
import com.queplix.core.integrator.security.User;
import com.queplix.core.integrator.security.WebLoginManager;
import com.queplix.core.modules.config.ejb.UserPropertyManagerLocal;
import com.queplix.core.modules.eql.EQLERes;
import com.queplix.core.modules.eql.ejb.HistoryLocal;
import com.queplix.core.modules.eql.ejb.LockManagerLocal;
import com.queplix.core.modules.eql.error.EQLConstraintViolationException;
import com.queplix.core.modules.eql.error.EQLException;
import com.queplix.core.modules.eql.error.EQLLockException;
import com.queplix.core.modules.eql.error.EQLSystemException;
import com.queplix.core.modules.eql.error.UserQueryParseException;
import com.queplix.core.modules.eqlext.jxb.gr.Report;
import com.queplix.core.modules.eqlext.jxb.gr.Reqs;
import com.queplix.core.modules.eqlext.jxb.gr.ResField;
import com.queplix.core.modules.eqlext.jxb.gr.Ress;
import com.queplix.core.modules.eqlext.utils.ExtDateParser;
import com.queplix.core.modules.eqlext.utils.ReportBuilder;
import com.queplix.core.modules.inbox.InboxHelper;
import com.queplix.core.modules.inbox.InboxMessage;
import com.queplix.core.modules.inbox.ejb.InboxManagerLocal;
import com.queplix.core.modules.mail.MailAddress;
import com.queplix.core.utils.DateHelper;
import com.queplix.core.utils.StringHelper;

import javax.mail.MessagingException;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.TimeZone;

/**
 * @author rustem.nizamiev
 * @author Sergey Kozmin
 */
public class IntegratorGetRecords {
    private static final String SEARCH_SAVING_ENTITY = "search.search";

    public static SearchGridRecordsResponseObject searchWithMultipleFormConstraints(
            AccumulatedEntitiesRequestObject searchRequest,
            HttpServletRequest request)
            throws DisplayableException {
        SearchGridRecordsResponseObject gridResult = null;

        try {
            LogonSession ls = WebLoginManager.getLogonSession(request);
            RequestProperties props = new RequestProperties();
            props.setDoCount(searchRequest.getProps().isDoCount());
            props.setPage(searchRequest.getProps().getPage());
            props.setPagesize(searchRequest.getProps().getPageSize());
            props.setSortField(searchRequest.getProps().getSortField());
            props.setIgnoreSendOnRequest(false);

            String entityName = EntityOperationsHelper.getEntityNameFromFormID(searchRequest.getFormID());
            List<EntityData> entityFilters = (List<EntityData>) searchRequest.getEntityFilters();
            ActionContext actx = IntegratorHelper.getActionContext(request);
            RequestBuilder requestBuilder = RequestBuilderFactory.createRequestBuilder(entityName, entityFilters, props, ls, actx);

            gridResult = IntegratorHelper.getNotEmptyResult(props.getPage(),
                    requestBuilder,
                    entityName,
                    EntityViewHelper.FieldsModificator.CUSTOMIZED_GRID,
                    ls, actx);
        } catch (UserQueryParseException ex) {
            IntegratorHelper.throwException("Incorrect value: " + ex.getValue() + ". Entity: " + ex.getEntityName() + ". Field: " +
                    ex.getFieldCaption(), ex);
        } catch (EQLSystemException ex) {
            IntegratorHelper.throwException("EQL System Exception. " + ex.getMessage(), ex);
        } catch (EQLException ex) {
            IntegratorHelper.throwException("EQL Exception. " + ex.getMessage(), ex);
        } catch (RuntimeException th) {
            IntegratorHelper.reThrowException(th);
        }
        return gridResult;
    }

    public static AccumulatedEntityDataResponse getEntityData(EntityIDRequestObject entityDataRequest, HttpServletRequest request)
            throws DisplayableException {
        AccumulatedEntityDataResponse entityData = null;
        try {
            ServletContext ctx = request.getSession().getServletContext();
            LogonSession ls = WebLoginManager.getLogonSession(request);

            BoundFormsOperationsHelper.ResultFormStructure boundResultSet =
                    BoundFormsOperationsHelper.getBoundFormResult(entityDataRequest.getFormID(),
                            entityDataRequest.getRowID(), ls, IntegratorHelper.getActionContext(ctx));
            List<EntityData> entities = boundResultSet.getEntityDatas();
            List<EntityData> fields = boundResultSet.getFieldDatas();
            List<GridData> gridData = boundResultSet.getGridData();
            entityData = new AccumulatedEntityDataResponse(entities.toArray(new EntityData[entities.size()]),
                    fields.toArray(new EntityData[fields.size()]), gridData);
        } catch (RuntimeException th) {
            IntegratorHelper.reThrowException(th);
        }
        return entityData;
    }

    public static AccumulatedEntityDataResponse getLockForEditRecord(EntityIDRequestObject entityDataRequest, HttpServletRequest request)
            throws DisplayableException {
        ServletContext ctx = request.getSession().getServletContext();
        AccumulatedEntityDataResponse resp = null;
        Long rowID = entityDataRequest.getRowID();
        try {
            LogonSession ls = WebLoginManager.getLogonSession(request);
            String formID = entityDataRequest.getFormID();
            //trying to lock record with specified pkey (row id)
            String entityName = EntityOperationsHelper.getEntityNameFromFormID(formID);
            ActionContext actx = IntegratorHelper.getActionContext(ctx);
            IntegratedRecordSet resultset = EntityFacade.getEntityByIDRequest(entityName, rowID, ls, actx);
            if (resultset.getRowsCount() > 0) {
                LockManagerLocal locker = actx.getRecordsLockManager();
                EQLERes eqleRes = (EQLERes) resultset.getInitialResultSet().getEQLRes(); //todo implemented in old core. EJB's use the same way. Need to change non-safe down-cast.
                //lock the record, and after we lock it, get it, because it can be changed, before we lock the record.
                locker.lock(eqleRes, getFocusIDFromFormID(formID), 0L, ls);

                //get bound records.
                BoundFormsOperationsHelper.ResultFormStructure boundResultSet =
                        BoundFormsOperationsHelper.getBoundFormResult(entityDataRequest.getFormID(), entityDataRequest.getRowID(), ls, actx);
                List<EntityData> entities = boundResultSet.getEntityDatas();
                List<EntityData> fields = boundResultSet.getFieldDatas();
                List<GridData> gridData = boundResultSet.getGridData();
                resp = new AccumulatedEntityDataResponse(entities.toArray(new EntityData[entities.size()]),
                        fields.toArray(new EntityData[fields.size()]), gridData);
            } else {
                IntegratorHelper.throwException("System could not find the record you are trying to lock. " +
                        "Probably, the record was deleted, update your data. ");
            }
        } catch (EQLLockException e) {
            IntegratorHelper.throwException("Record is already locked. ", e);
        } catch (EQLException e) {
            IntegratorHelper.throwException("Eql exception occured. Caused by :" + e.getMessage() + ". ", e);
        } catch (RuntimeException th) {
            IntegratorHelper.reThrowException(th);
        }
        return resp;
    }

    public static AccumulatedEntityDataResponse unlockAfterEditRecord(EntityIDRequestObject entityDataRequest, HttpServletRequest request)
            throws DisplayableException {
        ServletContext ctx = request.getSession().getServletContext();
        LogonSession ls = WebLoginManager.getLogonSession(request);
        Long rowID = entityDataRequest.getRowID();
        String formID = entityDataRequest.getFormID();
        ActionContext servletCacheActionContext = IntegratorHelper.getActionContext(ctx);
        try {
            //trying to lock record with specified pkey (row id)
            String entityName = EntityOperationsHelper.getEntityNameFromFormID(formID);
            IntegratedRecordSet resultset = EntityFacade.getEntityByIDRequest(entityName, rowID, ls, servletCacheActionContext);
            if (resultset.getRowsCount() > 0) {
                LockManagerLocal locker = servletCacheActionContext.getRecordsLockManager();
                EQLERes eqleRes = (EQLERes) resultset.getInitialResultSet().getEQLRes(); //todo implemented in old core. EJB's use the same way. Need to change non-safe down-cast.

⌨️ 快捷键说明

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