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

📄 solutionhandler.java

📁 CRM源码This file describes some issues that should be implemented in future and how it should be imple
💻 JAVA
字号:
/*
 * 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.qwoss.client.frames.mainframe;

import com.queplix.core.client.app.vo.EntityData;
import com.queplix.core.client.app.vo.EntityReferenceData;
import com.queplix.core.client.app.vo.EntityReferenceDataRequest;
import com.queplix.core.client.app.vo.FamgMeta;
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.MetaData;
import com.queplix.core.client.app.vo.RowData;
import com.queplix.core.client.app.vo.TextboxFieldData;
import com.queplix.core.client.common.ui.DialogHelper;
import com.queplix.core.client.frames.mainframe.DefaultOperationStrategy;
import com.queplix.core.client.frames.mainframe.FormOperations;
import com.queplix.core.client.frames.mainframe.FormState;
import com.queplix.core.client.frames.mainframe.OperationContext;
import com.queplix.core.client.frames.mainframe.OperationTypes;

import java.util.ArrayList;
import java.util.Collection;

/**
 * Description:
 *
 * @author sergei.savchuk
 */
public class SolutionHandler extends DefaultOperationStrategy {

    public static final String ATTACH_FILE = "ATTACH_FILE";
    public static final String SOLUTION_ID = "qw_solutionid";
    public static final String SUB_CATEGORY_FIELD_NAME = "qw_subcategoryid";
    public static final String CATEGORY_FIELD_NAME = "qw_categoryid";

    private static final String CUR_TICKET_ID_FIELD = "qw_cur_ticket";
    //private static final String TICKET_ID_FIELD = "qw_ticketid";

    private static final String ATTACHMENT_OBJECTS_ENTITY = "attachment_objects.solution";
    private static final String OBJECT_ID = "object_id";

    private static final String TICKET_ENTITY = "ticket.ticket";
    private static final String TICKET_FILTER_FIELD = "qw_solution";

    private FieldData[] initialFieldsData = null;
    private String curOriginTicketId = "0";

    /*
     * Ticket and AttachmentKnowledgeBase form ids
     * It should initialized in HandlerFactory or it's siblings
     */
    private String ticketFormId, attachKnowBaseFormId;

    // Ties with other handlers
    private TicketHandler ticketHandler;
    private AttachmentSolutionHandler attachSolutionHandler;

    public void handleControlDataRequest(FieldDataRequest request) {
        FamgMeta.Index formIndex = getFormIndex();
        String elementID = request.getElementID();
        FormOperations context = getOperationContext().getFormOperations();
        if(TicketHandler.COMPONENT_ID_FIELD_NAME.equalsIgnoreCase(elementID)) {
            EntityReferenceDataRequest theRequest = (EntityReferenceDataRequest) request;
            FieldData productData = context.getFieldData(formIndex,
                    TicketHandler.PRODUCT_ID_FIELD_NAME);
            FieldData cloned = productData.cloneData();
            cloned.setFieldID(TicketHandler.COMPONENT_FILTER_FIELD_NAME);
            theRequest.setAdditionalFilterForRequestingEntity(cloned);
        } else if(SUB_CATEGORY_FIELD_NAME.equalsIgnoreCase(elementID)) {
            EntityReferenceDataRequest theRequest = (EntityReferenceDataRequest) request;
            FieldData productData = context.getFieldData(formIndex,
                    CATEGORY_FIELD_NAME);
            FieldData cloned = productData.cloneData();
            cloned.setFieldID(CATEGORY_FIELD_NAME);
            theRequest.setAdditionalFilterForRequestingEntity(cloned);
        }
        super.handleControlDataRequest(request);
    }

    public void handleCustomButtonEvent(String buttonId) {
        FamgMeta.Index formIndex = getFormIndex();
        if (buttonId.equals(ATTACH_FILE)) {
            int state = getOperationContext().getFormOperations().getFormState(formIndex);
            switch (state) {
                case FormState.SELECTED_STATE:
                    createNewAttachment(formIndex);
                    break;
                default:
                    DialogHelper.showModalMessageDialog("This button is available only in SELECTED state.");
            }
        }
    }

    private void createNewAttachment(FamgMeta.Index form) {
        FieldData solutionId = getOperationContext().getFormOperations().getFieldData(
                form, SOLUTION_ID);
        FieldData clonedSolutionId = solutionId.cloneData();
        FieldData[] initData = new FieldData[6];
        initData[0] = clonedSolutionId;

        attachSolutionHandler.setInitialFieldsData(initData);

        OperationsHelper.createNewRecord(attachKnowBaseFormId, getOperationContext());
    }

    public void handleLinkEvent(String fromLinkFieldId) {
        FamgMeta.Index formIndex = getFormIndex();

        OperationContext context = getOperationContext();
        FormOperations formContext = context.getFormOperations();
        MetaData metadata = context.getMetaData();
        FamgMeta formMeta = metadata.getFamgMeta(formIndex);
        FieldMeta fieldMeta = formMeta.getForm().getEntityMeta().getField(fromLinkFieldId);
        FamgMeta.Index toFormIndex = fieldMeta.getLinkedForm();
        String linkedForm = metadata.getFormID(toFormIndex);
        
        int state = formContext.getFormState(formIndex);
        switch (state){
            case FormState.SELECTED_STATE:
                ArrayList linkFilter = new ArrayList();
                if (linkedForm.equalsIgnoreCase(ticketFormId)){ // the link for ticket form is pressed
                    //set filter
                    EntityReferenceData erd = new EntityReferenceData(TICKET_FILTER_FIELD);
                    erd.setSelectedRowID(formContext.getSelectedRecordId(formIndex));
                    linkFilter.add(
                            new EntityData(TICKET_ENTITY, new Long(-1), new FieldData[] { erd } ));
                    ticketHandler.setExternalEntityFilters(linkFilter);                  
                } else if (linkedForm.equalsIgnoreCase(attachKnowBaseFormId)) {
                    linkFilter.add(
                            new EntityData(ATTACHMENT_OBJECTS_ENTITY, new Long(-1), 
                            new FieldData[] {
                                new TextboxFieldData( OBJECT_ID, 
                                    formContext.getSelectedRecordId(formIndex).toString()
                                )
                            }));
                    attachSolutionHandler.setExternalEntityFilters(linkFilter);                  
                }
                else
                    break;
                //clear form
                context.getGridOperations().activateGrid(toFormIndex);
                context.getFormOperations().activateForm(toFormIndex);
                formContext.clearForm(toFormIndex, true);
                //perform search
                getOperationContext().performOperation(OperationTypes.SEARCH_RECORDS, toFormIndex);
                return;
        }
        //surfe to form
        super.handleLinkEvent(fromLinkFieldId);
    }

    public void setInitialFieldsData(FieldData[] fieldsData){
        initialFieldsData = fieldsData;
    }

    protected void createRecordProtorypeResponse(boolean success,
                                                 FieldData[] fields,
                                                 Long rowId) {
        super.createRecordProtorypeResponse(success, fields, rowId);
        if(!success) {
            return;
        }

        FamgMeta.Index formIndex = getFormIndex();

        if(initialFieldsData != null && initialFieldsData.length > 0) {
            FormOperations formContext = getOperationContext().getFormOperations();
            for(int i = 0; i < initialFieldsData.length; i++) {
                if(initialFieldsData[i] != null) {
                    formContext.setFieldData(formIndex, initialFieldsData[i]);
                }
            }
            TextboxFieldData fieldData = (TextboxFieldData) formContext.getFieldData(
                    formIndex, CUR_TICKET_ID_FIELD);
            String originTicketId = fieldData.getText();
            curOriginTicketId = (originTicketId != null) ? originTicketId : "0";
            initialFieldsData = null;
        } else {
            curOriginTicketId = "0";
        }
    }

    protected void insertRecordResponse(boolean success,
                                        EntityData[] entitiesList,
                                        EntityData[] externalFieldsList,
                                        Collection gridData, RowData updatedRow
    ) {

        super.insertRecordResponse(success, entitiesList, externalFieldsList,
                gridData, updatedRow);
        if(!success) return;
        if(!curOriginTicketId.equals("0")){
            FormOperations formContext = getOperationContext().getFormOperations();
            long solutionId = formContext.getSelectedRecordId(getFormIndex()).longValue();
            DialogHelper.showModalMessageDialog("The solution # "+solutionId+" is assigned to ticket # "+curOriginTicketId+".");

            curOriginTicketId = "0";
        }
    }

    public void setTicketHandler(TicketHandler ticketHandler) {
        this.ticketHandler = ticketHandler;
    }

    public void setAttachSolutionHandler(AttachmentSolutionHandler attachSolutionHandler) {
        this.attachSolutionHandler = attachSolutionHandler;
    }

    public void setTicketFormId(String ticketFormId) {
        this.ticketFormId = ticketFormId;
    }

    public void setAttachKnowBaseFormId(String attachKnowBaseFormId) {
        this.attachKnowBaseFormId = attachKnowBaseFormId;
    }
}

⌨️ 快捷键说明

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