zoukankan      html  css  js  c++  java
  • 工作记录之开发HRM项目总结

    开发HRM项目的步骤:

    1:首先保留HRM项目中的两张表(Employee,Position)把这两张表中的数据内容复制到Operator-Portlet这个项目中,这两张表的service.xml配置是:

    <!-- Position -->
        <entity name="Position" local-service="true" remote-service="false">
            <column name="positionId" type="long" primary="true" />
            <column name="companyId" type="long"/>
            <column name="departmentId" type="long" />
            <column name="position" type="String" />
            <column name="positionLevel" type="String" />
            <column name="upPosition" type="String" />
            <column name="positionIndex" type="String" />
            <column name="description" type="String" />
            <finder name="CompanyId" return-type="Collection">
                <finder-column name="companyId"/>
            </finder>
        </entity>
        <!-- Employee -->
        <entity name="Employee" local-service="true" remote-service="false">
            <column name="employeeId" type="long" primary="true" />
            <column name="companyId" type="long" />
            <column name="operatorId" type="long" /><!-- 用户Id -->
            <column name="departmentId" type="long" />
            <column name="departmentName" type="String" />
            <column name="employeeNo" type="String" />
            <column name="employeeName" type="String" />
            <column name="employeeSex" type="String" />
            <column name="employeeAge" type="int" />
            <column name="identityCard" type="String" />
            <column name="birthDate" type="Date" />
            <column name="nation" type="String" />
            <column name="positionId" type="long" />
            <column name="positionName" type="String" />
            <column name="category" type="String" />
            <column name="employeeType" type="String" />
            <column name="photoId" type="long" />
            <column name="policitalStatus" type="String" />
            <column name="isMarry" type="String" />
            <column name="homeAddress" type="String" />
            <column name="archivesAddress" type="String" />
            <column name="workAddress" type="String" />
            <column name="mobilePhone" type="String" />
            <column name="workPhone" type="String" />
            <column name="email" type="String" />
            <column name="QQ" type="String" />
            <column name="MSN" type="String" />
            <column name="wechart" type="String" /><!-- 微信 -->
            <column name="microblog" type="String" />
            <column name="interest" type="String" />
            <column name="homePhone" type="String" />
            <column name="emergencyPhone" type="String" />
            <column name="internshipStart" type="Date" />
            <column name="internshipEnd" type="Date" />
            <column name="educationlevel" type="String" />
            <column name="degree" type="String" />
            <column name="graduatedUniversity" type="String" />
            <column name="specialty" type="String" />
            <column name="graduatedDate" type="Date" />
            <column name="householdRegister" type="String" />
            <column name="technicalTitle" type="String" />
            <column name="contractStart" type="Date" />
            <column name="contractEnd" type="Date" />
            <column name="employeeStatus" type="String" />
            <column name="dimissionType" type="String" />
            <column name="onTrialDate" type="Date" />
            <column name="offTrialDate" type="Date" />
            <column name="entryDate" type="Date" />
            <column name="dimissionDate" type="Date" />
            <column name="dimissionReason" type="String" />
            <column name="recruitmentResource" type="String" />
            <column name="wageAccount" type="String" />
            <column name="healthCareAccount" type="String" />
            <column name="accumulationFundAccount" type="String" />
            <column name="unemploymentInsurance" type="String" />
            <column name="socialInsurance" type="String" />
            <column name="endowmentInsurance" type="String" />
            <column name="zodiac" type="String" />
            <column name="constellation" type="String" />
    
            <column name="createDate" type="Date" />
            <column name="createUserId" type="long" />
    
            <column name="strField1" type="String" />
            <column name="strField2" type="String" />
            <column name="strField3" type="String" />
            <column name="strField4" type="String" />
            <column name="strField5" type="String" />
            <column name="strField6" type="String" />
            <column name="strField7" type="String" />
            <column name="strField8" type="String" />
            <column name="textareaField1" type="String" />
            <column name="textareaField2" type="String" />
            <column name="textareaField3" type="String" />
            <column name="textareaField4" type="String" />
            <column name="floatField1" type="double" />
            <column name="floatField2" type="double" />
            <column name="floatField3" type="double" />
            <column name="floatField4" type="double" />
            <column name="dateField1" type="Date" />
            <column name="dateField2" type="Date" />
            <column name="dateField3" type="Date" />
            <column name="dateField4" type="Date" />
            
            <order by="desc">
                <order-column name="createDate" />
            </order>
            <finder name="CompanyId" return-type="Collection">
                <finder-column name="companyId" />
            </finder>
            <finder name="DepartmentId" return-type="Collection">
                <finder-column name="departmentId" />
            </finder>
            <finder name="PositionId" return-type="Collection">
                <finder-column name="positionId"/>
            </finder>
        </entity>
        

    上述的finder标签会生成相应的方法。

    2:需要写一个动态获取数据库表中的数据(和数据库表中的字段的名称),把这个类下载Operator-Portlet这个项目中的base包下。这个类的名称为DynamicPackageEntity.

    package com.ebizwindow.operator.portlet.base;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import javax.portlet.PortletPreferences;
    import javax.portlet.PortletRequest;
    
    import com.ebizwindow.crm.model.CompanyColumnDefinition;
    import com.ebizwindow.crm.service.CompanyColumnDefinitionLocalServiceUtil;
    import com.ebizwindow.operator.constants.TableConst;
    import com.ebizwindow.operator.model.Department;
    import com.ebizwindow.operator.model.Employee;
    import com.ebizwindow.operator.model.Position;
    import com.ebizwindow.operator.service.DepartmentLocalServiceUtil;
    import com.ebizwindow.operator.service.EmployeeLocalServiceUtil;
    import com.ebizwindow.operator.service.PositionLocalServiceUtil;
    import com.ebizwindow.operator.utils.DateUtil;
    import com.liferay.portal.kernel.exception.PortalException;
    import com.liferay.portal.kernel.exception.SystemException;
    import com.liferay.portal.kernel.util.StringPool;
    import com.liferay.portal.model.User;
    import com.liferay.portal.service.UserLocalServiceUtil;
    import com.liferay.portal.util.PortalUtil;
    
    public class DynamicPackageEntity {
    
        
        
        /**
         * 动态获取(职位)的值
         * @param portletRequest
         * @param positionId
         * @return
         * @throws PortalException
         * @throws SystemException
         */
        
        public static Map<String, String> getPositionValue(
                PortletRequest portletRequest, Long positionId)
                throws PortalException, SystemException {
            Map<String, String> positionValue = null;
            Long companyId = PortalUtil.getCompanyId(portletRequest);
            if (positionId > 0) {
                Position position = PositionLocalServiceUtil
                        .getPosition(positionId);
                if (position != null) {
                    List<CompanyColumnDefinition> companyColumns = 
                        CompanyColumnDefinitionLocalServiceUtil
                            .searchByTableName(companyId, TableConst.CRM_Position,
                                    true);
                    positionValue = new HashMap<String, String>();
                    for(CompanyColumnDefinition companyColumnDefinition : companyColumns){
                        String columnName = companyColumnDefinition.getColumnName();
                        if(columnName.equals("departmentId")){
                            long departmentId = position.getDepartmentId();
                            Department department = null;
                            if (departmentId > 0) {
                                department = DepartmentLocalServiceUtil.getDepartment(departmentId);
                            }
                            positionValue.put(columnName, department != null ? department.getDepartmentName() : StringPool.BLANK);
                        } else if(columnName.equals("position")){
                            positionValue.put(columnName, position.getPosition());
                        } else if(columnName.equals("positionLevel")){
                            positionValue.put(columnName, position.getPositionLevel());
                        } else if(columnName.equals("upPosition")){
                            positionValue.put(columnName, position.getUpPosition());
                        } else if(columnName.equals("positionIndex")){
                            positionValue.put(columnName, position.getPositionIndex());
                        } else if(columnName.equals("description")){
                            positionValue.put(columnName, position.getDescription());
                        }
                    }
                }
            }
            return positionValue;
        }
        
        
        /**
         * 动态获取(员工)的值
         * @param portletRequest
         * @param employeeId
         * @return
         * @throws PortalException
         * @throws SystemException
         */
        public static Map<String, String> getEmployeeValue(PortletRequest portletRequest, Long employeeId) 
            throws PortalException, SystemException {
    
            Map<String, String> entityValueMap = null;
            long companyId = PortalUtil.getCompanyId(portletRequest);
            if (employeeId > 0){
                Employee employee = EmployeeLocalServiceUtil.getEmployee(employeeId);
                if (employee != null){
                    List<CompanyColumnDefinition> companyColumns = CompanyColumnDefinitionLocalServiceUtil
                            .searchByTableName(companyId, TableConst.CRM_Employee, true);
                    entityValueMap = new HashMap<String, String>();
                    for (CompanyColumnDefinition companyColumn : companyColumns) {
                        String columnName = companyColumn.getColumnName();
                        if (columnName.equals("employeeName")) {
                            entityValueMap.put(columnName, employee.getEmployeeName());
                        } else if (columnName.equals("employeeNo")) {
                            entityValueMap.put(columnName, employee.getEmployeeNo());
                        } else if (columnName.equals("employeeAge")) {
                            entityValueMap.put(columnName, employee.getEmployeeAge() != 0 
                                        ? String.valueOf(employee.getEmployeeAge()) : "");
                        } else if (columnName.equals("employeeSex")) {
                            entityValueMap.put(columnName, employee.getEmployeeSex());
                        } else if (columnName.equals("identityCard")) {
                            entityValueMap.put(columnName, employee.getIdentityCard());
                        } else if (columnName.equals("nation")) {
                            entityValueMap.put(columnName, employee.getNation());
                        } else if (columnName.equals("category")) {
                            entityValueMap.put(columnName, employee.getCategory());
                        } else if (columnName.equals("policitalStatus")) {
                            entityValueMap.put(columnName, employee.getPolicitalStatus());
                        } else if (columnName.equals("isMarry")) {
                            entityValueMap.put(columnName, employee.getIsMarry());
                        } else if (columnName.equals("employeeType")) {
                            entityValueMap.put(columnName, employee.getEmployeeType());
                        } else if (columnName.equals("mobilePhone")) {
                            entityValueMap.put(columnName, employee.getMobilePhone());
                        } else if (columnName.equals("workPhone")) {
                            entityValueMap.put(columnName, employee.getWorkPhone());
                        } else if (columnName.equals("email")) {
                            entityValueMap.put(columnName, employee.getEmail());
                        } else if (columnName.equals("QQ")) {
                            entityValueMap.put(columnName, employee.getQQ());
                        } else if (columnName.equals("MSN")) {
                            entityValueMap.put(columnName, employee.getMSN());
                        } else if (columnName.equals("zodiac")) {
                            entityValueMap.put(columnName, employee.getZodiac());
                        } else if (columnName.equals("constellation")) {
                            entityValueMap.put(columnName, employee.getConstellation());
                        } else if (columnName.equals("microblog")) {
                            entityValueMap.put(columnName, employee.getMicroblog());
                        } else if (columnName.equals("interest")) {
                            entityValueMap.put(columnName, employee.getInterest());
                        } else if (columnName.equals("homePhone")) {
                            entityValueMap.put(columnName, employee.getHomePhone());
                        } else if (columnName.equals("emergencyPhone")) {
                            entityValueMap.put(columnName, employee.getEmergencyPhone());
                        } else if (columnName.equals("educationlevel")) {
                            entityValueMap.put(columnName, employee.getEducationlevel());
                        } else if (columnName.equals("degree")) {
                            entityValueMap.put(columnName, employee.getDegree());
                        } else if (columnName.equals("graduatedUniversity")) {
                            entityValueMap.put(columnName, employee.getGraduatedUniversity());
                        } else if (columnName.equals("specialty")) {
                            entityValueMap.put(columnName, employee.getSpecialty());
                        } else if (columnName.equals("householdRegister")) {
                            entityValueMap.put(columnName, employee.getHouseholdRegister());
                        } else if (columnName.equals("technicalTitle")) {
                            entityValueMap.put(columnName, employee.getTechnicalTitle());
                        } else if (columnName.equals("dimissionType")) {
                            entityValueMap.put(columnName, employee.getDimissionType());
                        } else if (columnName.equals("recruitmentResource")) {
                            entityValueMap.put(columnName, employee.getRecruitmentResource());
                        } else if (columnName.equals("wageAccount")) {
                            entityValueMap.put(columnName, employee.getWageAccount());
                        } else if (columnName.equals("healthCareAccount")) {
                            entityValueMap.put(columnName, employee.getHealthCareAccount());
                        } else if (columnName.equals("accumulationFundAccount")) {
                            entityValueMap.put(columnName, employee.getAccumulationFundAccount());
                        } else if (columnName.equals("unemploymentInsurance")) {
                            entityValueMap.put(columnName, employee.getUnemploymentInsurance());
                        } else if (columnName.equals("socialInsurance")) {
                            entityValueMap.put(columnName, employee.getSocialInsurance());
                        } else if (columnName.equals("endowmentInsurance")) {
                            entityValueMap.put(columnName, employee.getEndowmentInsurance());
                        } else if (columnName.equals("homeAddress")) {
                            entityValueMap.put(columnName, employee.getHomeAddress());
                        } else if (columnName.equals("archivesAddress")) {
                            entityValueMap.put(columnName, employee.getArchivesAddress());
                        } else if (columnName.equals("workAddress")) {
                            entityValueMap.put(columnName, employee.getWorkAddress());
                        } else if (columnName.equals("employeeStatus")) {
                            entityValueMap.put(columnName, employee.getEmployeeStatus());
                        } else if (columnName.equals("workAddress")) {
                            entityValueMap.put(columnName, employee.getWorkAddress());
                        } else if (columnName.equals("dimissionReason")) {
                            entityValueMap.put(columnName, employee.getDimissionReason());
                        } else if (columnName.equals("workAddress")) {
                            entityValueMap.put(columnName, employee.getWorkAddress());
                        } else if (columnName.equals("birthDate")) {
                            entityValueMap.put(columnName, DateUtil.formatDateNoHour(employee.getBirthDate()));
                        } else if (columnName.equals("internshipStart")) {
                            entityValueMap.put(columnName, DateUtil.formatDateNoHour(employee.getInternshipStart()));
                        } else if (columnName.equals("internshipEnd")) {
                            entityValueMap.put(columnName, DateUtil.formatDateNoHour(employee.getGraduatedDate()));
                        } else if (columnName.equals("graduatedDate")) {
                            entityValueMap.put(columnName, DateUtil.formatDateNoHour(employee.getInternshipEnd()));
                        } else if (columnName.equals("contractStart")) {
                            entityValueMap.put(columnName, DateUtil.formatDateNoHour(employee.getContractStart()));
                        } else if (columnName.equals("contractEnd")) {
                            entityValueMap.put(columnName, DateUtil.formatDateNoHour(employee.getContractEnd()));
                        } else if (columnName.equals("onTrialDate")) {
                            entityValueMap.put(columnName, DateUtil.formatDateNoHour(employee.getOnTrialDate()));
                        } else if (columnName.equals("offTrialDate")) {
                            entityValueMap.put(columnName, DateUtil.formatDateNoHour(employee.getOffTrialDate()));
                        } else if (columnName.equals("entryDate")) {
                            entityValueMap.put(columnName, DateUtil.formatDateNoHour(employee.getEntryDate()));
                        } else if (columnName.equals("dimissionDate")) {
                            entityValueMap.put(columnName, DateUtil.formatDateNoHour(employee.getDimissionDate()));
                        } else if (columnName.equals("createDate")) {
                            entityValueMap.put(columnName, DateUtil.formatDateNoHour(employee.getCreateDate()));
                        } else if (columnName.equals("positionId")) {
                            long positionId = employee.getPositionId();
                            if (positionId > 0) {
                                Position position = PositionLocalServiceUtil.getPosition(positionId);
                                entityValueMap.put(columnName, position.getPosition());
                            } else {
                                entityValueMap.put(columnName, StringPool.BLANK);
                            }
                        } else if (columnName.equals("departmentId")) {
                            long departmentId = employee.getDepartmentId();
                            if (departmentId > 0) {
                                Department department = DepartmentLocalServiceUtil.getDepartment(departmentId);
                                entityValueMap.put(columnName, department.getDepartmentName());
                            } else {
                                entityValueMap.put(columnName, StringPool.BLANK);
                            }
                        } else if (columnName.equals("createUserId")) {
                            long createUserId = employee.getCreateUserId();
                            if (createUserId > 0) {
                                User user = UserLocalServiceUtil.getUser(createUserId);
                                entityValueMap.put(columnName, user.getScreenName());
                            } else {
                                entityValueMap.put(columnName, StringPool.BLANK);
                            }
                        } else if (columnName.equals("strField1")){
                            entityValueMap.put(columnName, employee.getStrField1());
                        } else if (columnName.equals("strField2")){
                            entityValueMap.put(columnName, employee.getStrField2());
                        } else if (columnName.equals("strField3")){
                            entityValueMap.put(columnName, employee.getStrField3());
                        } else if (columnName.equals("strField4")){
                            entityValueMap.put(columnName, employee.getStrField4());
                        } else if (columnName.equals("strField5")){
                            entityValueMap.put(columnName, employee.getStrField5());
                        } else if (columnName.equals("strField6")){
                            entityValueMap.put(columnName, employee.getStrField6());
                        } else if (columnName.equals("strField7")){
                            entityValueMap.put(columnName, employee.getStrField5());
                        } else if (columnName.equals("strField8")){
                            entityValueMap.put(columnName, employee.getStrField6());
                        } else if (columnName.equals("textareaField1")){
                            entityValueMap.put(columnName, employee.getTextareaField1());
                        } else if (columnName.equals("textareaField2")){
                            entityValueMap.put(columnName, employee.getTextareaField2());
                        } else if (columnName.equals("textareaField3")){
                            entityValueMap.put(columnName, employee.getTextareaField1());
                        } else if (columnName.equals("textareaField4")){
                            entityValueMap.put(columnName, employee.getTextareaField2());
                        } else if (columnName.equals("floatField1")){
                            entityValueMap.put(columnName, String.valueOf(employee.getFloatField1() == 0 ? "" : employee.getFloatField1()));
                        } else if (columnName.equals("floatField2")){
                            entityValueMap.put(columnName, String.valueOf(employee.getFloatField2() == 0 ? "" : employee.getFloatField2()));
                        } else if (columnName.equals("floatField3")){
                            entityValueMap.put(columnName, String.valueOf(employee.getFloatField3() == 0 ? "" : employee.getFloatField3()));
                        } else if (columnName.equals("floatField4")){
                            entityValueMap.put(columnName, String.valueOf(employee.getFloatField4() == 0 ? "" : employee.getFloatField4()));
                        } else if (columnName.equals("dateField1")){
                            entityValueMap.put(columnName, DateUtil.formatDateNoHour(employee.getDateField1()));
                        } else if (columnName.equals("dateField2")){
                            entityValueMap.put(columnName, DateUtil.formatDateNoHour(employee.getDateField2()));
                        } else if (columnName.equals("dateField3")){
                            entityValueMap.put(columnName, DateUtil.formatDateNoHour(employee.getDateField3()));
                        } else if (columnName.equals("dateField4")){
                            entityValueMap.put(columnName, DateUtil.formatDateNoHour(employee.getDateField4()));
                        }
                    }
                }
            }
            return entityValueMap;
        }
    
    //    public static Map<String, String> getSocialRelationsValue(
    //            PortletRequest portletRequest, long socialRelationsId)
    //            throws PortalException, SystemException {
    //        Map<String, String> entityValueMap = null;
    //        long companyId = PortalUtil.getCompanyId(portletRequest);
    //        if (socialRelationsId > 0) {
    //            SocialRelations socialRelations = SocialRelationsLocalServiceUtil
    //                    .getSocialRelations(socialRelationsId);
    //            if (socialRelations != null) {
    //                List<CompanyColumnDefinition> companyColumn = CompanyColumnDefinitionLocalServiceUtil
    //                        .searchByTableName(companyId,TableConst.HRM_SocialRelation, true);
    //                entityValueMap = new HashMap<String, String>();
    //                for(CompanyColumnDefinition columnDefinition : companyColumn) {
    //                    String columnName = columnDefinition.getColumnName();
    //                    if(columnName.equals("company")){
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getCompany()));
    //                    } else if (columnName.equals("position")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getPosition()));
    //                    } else if (columnName.equals("workStatus")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getWorkStatus()));
    //                    } else if (columnName.equals("mobilePhone")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getMobilePhone()));
    //                    } else if (columnName.equals("companyId")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getCompanyId()));
    //                    } else if (columnName.equals("memberRelations")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getMemberRalations()));
    //                    } else if (columnName.equals("politicalStatus")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getPoliticalStatus()));
    //                    } else if (columnName.equals("currentAddress")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getCurrentAddress()));
    //                    } else if (columnName.equals("identityCard")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getIdentityCard()));
    //                    } else if (columnName.equals("description")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getDescription()));
    //                    } else if (columnName.equals("createDate")){
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getCreateDate()));
    //                    } else if (columnName.equals("memberSex")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getMemberSex()));
    //                    } else if (columnName.equals("employeeId")) {
    //                        long employeeId = socialRelations.getEmployeeId();
    //                        Employee employee = null;
    //                        if (employeeId > 0) {
    //                            employee = EmployeeLocalServiceUtil.getEmployee(employeeId);
    //                        }
    //                        entityValueMap.put(columnName, employee != null ? employee.getEmployeeName() : StringPool.BLANK);
    //                    } else if (columnName.equals("postCode")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getPostCode()));
    //                    } else if (columnName.equals("strField1")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getStrField1()));
    //                    } else if (columnName.equals("strField2")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getStrField2()));
    //                    } else if (columnName.equals("strField3")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getStrField3()));
    //                    } else if (columnName.equals("strField4")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getStrField4()));
    //                    } else if (columnName.equals("strField5")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getStrField5()));
    //                    } else if (columnName.equals("strField6")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getStrField6()));
    //                    } else if (columnName.equals("textareaField1")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getTextareaField1()));
    //                    } else if (columnName.equals("textareaField2")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getTextareaField2()));
    //                    } else if (columnName.equals("textareaField3")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getTextareaField3()));
    //                    } else if (columnName.equals("textareaField4")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getTextareaField4()));
    //                    } else if (columnName.equals("floatField1")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getFloatField1()));
    //                    } else if (columnName.equals("floatField2")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getFloatField2()));
    //                    } else if (columnName.equals("floatField3")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getFloatField3()));
    //                    } else if (columnName.equals("floatField4")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getFloatField4()));
    //                    } else if (columnName.equals("dateField1")) {
    //                        entityValueMap.put(columnName, DateUtil.formatDateNoHour(socialRelations.getDateField1()));
    //                    } else if (columnName.equals("dateField2")) {
    //                        entityValueMap.put(columnName, DateUtil.formatDateNoHour(socialRelations.getDateField2()));
    //                    } else if (columnName.equals("memberName")) {
    //                        entityValueMap.put(columnName, String.valueOf(socialRelations.getMemberName()));
    //                    }
    //                }
    //            }
    //        }
    //        return entityValueMap;
    //    }    
    
    //    public static Map<String, String> getWorkExperienceValue(PortletRequest portletRequest,
    //            Long workExperienceId) throws PortalException, SystemException{
    //        Map<String, String> entityValueMap = null;
    //        long companyId = PortalUtil.getCompanyId(portletRequest);
    //        if(workExperienceId > 0) {
    //            WorkExperience workExperience = WorkExperienceLocalServiceUtil.
    //                getWorkExperience(workExperienceId);
    //            if(workExperience != null) {
    //                List<CompanyColumnDefinition> columnDefinitions = CompanyColumnDefinitionLocalServiceUtil.
    //                    searchByTableName(companyId, TableConst.HRM_WorkExperience, true);
    //                entityValueMap = new LinkedHashMap<String, String>();
    //                for (CompanyColumnDefinition columnDefinition : columnDefinitions) {
    //                    String columnName = columnDefinition.getColumnName();
    //                    if(columnName.equals("employeeId")){
    //                        long employeeId = workExperience.getEmployeeId();
    //                        Employee employee = null;
    //                        if (employeeId > 0) {
    //                            employee = EmployeeLocalServiceUtil.getEmployee(employeeId);
    //                        }
    //                        entityValueMap.put(columnName, employee != null ? employee.getEmployeeName() : StringPool.BLANK);
    //                    } else if (columnName.equals("beginDate")) {
    //                        entityValueMap.put(columnName, String.valueOf(DateUtil.formatDateNoHour(workExperience.getBeginDate())));
    //                    } else if (columnName.equals("endDate")) {
    //                        entityValueMap.put(columnName, String.valueOf(DateUtil.formatDateNoHour(workExperience.getEndDate())));
    //                    } else if (columnName.equals("workCompany")) {
    //                        entityValueMap.put(columnName, String.valueOf(workExperience.getWorkCompany()));
    //                    } else if (columnName.equals("workDepartment")) {
    //                        entityValueMap.put(columnName, String.valueOf(workExperience.getWorkDepartment()));
    //                    } else if (columnName.equals("workPosition")) {
    //                        entityValueMap.put(columnName, String.valueOf(workExperience.getWorkPosition()));
    //                    } else if (columnName.equals("description")) {
    //                        entityValueMap.put(columnName, String.valueOf(workExperience.getDescription()));
    //                    } else if (columnName.equals("createDate")) {
    //                        entityValueMap.put(columnName, String.valueOf(workExperience.getCreateDate()));
    //                    } else if (columnName.equals("strField1")) {
    //                        entityValueMap.put(columnName, String.valueOf(workExperience.getStrField1()));
    //                    } else if (columnName.equals("strField2")) {
    //                        entityValueMap.put(columnName, String.valueOf(workExperience.getStrField2()));
    //                    } else if (columnName.equals("strField3")) {
    //                        entityValueMap.put(columnName, String.valueOf(workExperience.getStrField3()));
    //                    } else if (columnName.equals("strField4")) {
    //                        entityValueMap.put(columnName, String.valueOf(workExperience.getStrField4()));
    //                    } else if (columnName.equals("strField5")) {
    //                        entityValueMap.put(columnName, String.valueOf(workExperience.getStrField5()));
    //                    } else if (columnName.equals("strField6")) {
    //                        entityValueMap.put(columnName, String.valueOf(workExperience.getStrField6()));
    //                    } else if (columnName.equals("textareaField1")) {
    //                        entityValueMap.put(columnName, String.valueOf(workExperience.getTextareaField1()));
    //                    } else if (columnName.equals("textareaField2")) {
    //                        entityValueMap.put(columnName, String.valueOf(workExperience.getTextareaField2()));
    //                    } else if (columnName.equals("textareaField3")) {
    //                        entityValueMap.put(columnName, String.valueOf(workExperience.getTextareaField3()));
    //                    } else if (columnName.equals("textareaField4")) {
    //                        entityValueMap.put(columnName, String.valueOf(workExperience.getTextareaField4()));
    //                    } else if (columnName.equals("floatField1")) {
    //                        entityValueMap.put(columnName, String.valueOf(workExperience.getFloatField1()));
    //                    } else if (columnName.equals("floatField2")) {
    //                        entityValueMap.put(columnName, String.valueOf(workExperience.getFloatField2()));
    //                    } else if (columnName.equals("floatField3")) {
    //                        entityValueMap.put(columnName, String.valueOf(workExperience.getFloatField3()));
    //                    } else if (columnName.equals("floatField4")) {
    //                        entityValueMap.put(columnName, String.valueOf(workExperience.getFloatField4()));
    //                    } else if (columnName.equals("dateField1")) {
    //                        entityValueMap.put(columnName, DateUtil.formatDateNoHour(workExperience.getDateField1()));
    //                    } else if (columnName.equals("dateField2")) {
    //                        entityValueMap.put(columnName, DateUtil.formatDateNoHour(workExperience.getDateField2()));
    //                    }
    //                }
    //            }
    //        }
    //        return entityValueMap;
    //    }
        
    //    public static Map<String, String> getTrainingExperienceValue(
    //            PortletRequest portletRequest, long trainingExperienceId) throws PortalException, SystemException {
    //        Map<String, String> entityValueMap = null;
    //        long companyId = PortalUtil.getCompanyId(portletRequest);
    //        if(trainingExperienceId > 0) {
    //            TrainingExperience trainingExperience = TrainingExperienceLocalServiceUtil.
    //                getTrainingExperience(trainingExperienceId);
    //            if (trainingExperience != null) {
    //                List<CompanyColumnDefinition> columnDefinitions = 
    //                    CompanyColumnDefinitionLocalServiceUtil.searchByTableName(
    //                        companyId, TableConst.HRM_TrainingExperience, true);
    //                entityValueMap = new HashMap<String, String>();
    //                for (CompanyColumnDefinition columnDefinition : columnDefinitions) {
    //                    String columnName = columnDefinition.getColumnName();
    //                    if (columnName.equals("employeeId")) {
    //                        long employeeId = trainingExperience.getEmployeeId();
    //                        Employee employee = null;
    //                        if (employeeId > 0) {
    //                            employee = EmployeeLocalServiceUtil.getEmployee(employeeId);
    //                        }
    //                        entityValueMap.put(columnName, employee != null ? employee.getEmployeeName() : StringPool.BLANK);
    //                    } else if (columnName.equals("beginDate")) {
    //                        entityValueMap.put(columnName, String.valueOf(
    //                                DateUtil.formatDateNoHour(trainingExperience.getBeginDate())));
    //                    } else if (columnName.equals("endDate")) {
    //                        entityValueMap.put(columnName, String.valueOf(
    //                                DateUtil.formatDateNoHour(trainingExperience.getEndDate())));
    //                    } else if (columnName.equals("trainingDays")) {
    //                        entityValueMap.put(columnName, String.valueOf(
    //                                trainingExperience.getTrainingDays()));
    //                    } else if (columnName.equals("trainingType")) {
    //                        entityValueMap.put(columnName, String.valueOf(
    //                                trainingExperience.getTrainingType()));
    //                    } else if (columnName.equals("trainingContent")) {
    //                        entityValueMap.put(columnName, String.valueOf(
    //                                trainingExperience.getTrainingContent()));
    //                    } else if (columnName.equals("trainingCost")) {
    //                        entityValueMap.put(columnName, String.valueOf(
    //                                trainingExperience.getTrainingCost()));
    //                    } else if (columnName.equals("trainingCompany")) {
    //                        entityValueMap.put(columnName, String.valueOf(
    //                                trainingExperience.getTrainingCompany()));
    //                    } else if (columnName.equals("organizeCompany")) {
    //                        entityValueMap.put(columnName, String.valueOf(
    //                                trainingExperience.getOrganizeCompany()));
    //                    } else if (columnName.equals("description")) {
    //                        entityValueMap.put(columnName, String.valueOf(
    //                                trainingExperience.getDescription()));
    //                    } else if (columnName.equals("createDate")) {
    //                        entityValueMap.put(columnName, String.valueOf(
    //                                trainingExperience.getCreateDate()));
    //                    } else if (columnName.equals("strField1")) {
    //                        entityValueMap.put(columnName, String.valueOf(trainingExperience.getStrField1()));
    //                    } else if (columnName.equals("strField2")) {
    //                        entityValueMap.put(columnName, String.valueOf(trainingExperience.getStrField2()));
    //                    } else if (columnName.equals("strField3")) {
    //                        entityValueMap.put(columnName, String.valueOf(trainingExperience.getStrField3()));
    //                    } else if (columnName.equals("strField4")) {
    //                        entityValueMap.put(columnName, String.valueOf(trainingExperience.getStrField4()));
    //                    } else if (columnName.equals("strField5")) {
    //                        entityValueMap.put(columnName, String.valueOf(trainingExperience.getStrField5()));
    //                    } else if (columnName.equals("strField6")) {
    //                        entityValueMap.put(columnName, String.valueOf(trainingExperience.getStrField6()));
    //                    } else if (columnName.equals("textareaField1")) {
    //                        entityValueMap.put(columnName, String.valueOf(trainingExperience.getTextareaField1()));
    //                    } else if (columnName.equals("textareaField2")) {
    //                        entityValueMap.put(columnName, String.valueOf(trainingExperience.getTextareaField2()));
    //                    } else if (columnName.equals("textareaField3")) {
    //                        entityValueMap.put(columnName, String.valueOf(trainingExperience.getTextareaField3()));
    //                    } else if (columnName.equals("textareaField4")) {
    //                        entityValueMap.put(columnName, String.valueOf(trainingExperience.getTextareaField4()));
    //                    } else if (columnName.equals("floatField1")) {
    //                        entityValueMap.put(columnName, String.valueOf(trainingExperience.getFloatField1()));
    //                    } else if (columnName.equals("floatField2")) {
    //                        entityValueMap.put(columnName, String.valueOf(trainingExperience.getFloatField2()));
    //                    } else if (columnName.equals("floatField3")) {
    //                        entityValueMap.put(columnName, String.valueOf(trainingExperience.getFloatField3()));
    //                    } else if (columnName.equals("floatField4")) {
    //                        entityValueMap.put(columnName, String.valueOf(trainingExperience.getFloatField4()));
    //                    } else if (columnName.equals("dateField1")) {
    //                        entityValueMap.put(columnName, DateUtil.formatDateNoHour(trainingExperience.getDateField1()));
    //                    } else if (columnName.equals("dateField2")) {
    //                        entityValueMap.put(columnName, DateUtil.formatDateNoHour(trainingExperience.getDateField2()));
    //                    }
    //                }
    //            }
    //        }
    //        return entityValueMap;
    //    }
        
    //    public static Map<String, String> getStudyExperienceValue(PortletRequest portletRequest, Long studyExperienceId) 
    //        throws PortalException, SystemException {
    //
    //        Map<String, String> entityValueMap = null;
    //        long companyId = PortalUtil.getCompanyId(portletRequest);
    //        if (studyExperienceId > 0){
    //            StudyExperience studyExperience = StudyExperienceLocalServiceUtil.getStudyExperience(studyExperienceId);
    //            if (studyExperience != null){
    //                List<CompanyColumnDefinition> companyColumns = CompanyColumnDefinitionLocalServiceUtil
    //                        .searchByTableName(companyId, TableConst.HRM_StudyExperience, true);
    //                entityValueMap = new HashMap<String, String>();
    //                for (CompanyColumnDefinition companyColumn : companyColumns) {
    //                    String columnName = companyColumn.getColumnName();
    //                    if (columnName.equals("employeeId")) {
    //                        long employeeId=studyExperience.getEmployeeId();
    //                        if(employeeId>0){
    //                            Employee employee=EmployeeLocalServiceUtil.getEmployee(employeeId);
    //                            entityValueMap.put(columnName, employee.getEmployeeName());
    //                        }else{
    //                            entityValueMap.put(columnName, StringPool.BLANK);                            
    //                        }
    //                    } else if (columnName.equals("startDate")) {
    //                        entityValueMap.put(columnName,DateUtil.formatDateNoHour(studyExperience.getStartDate()));
    //                    } else if (columnName.equals("endDate")) {
    //                        entityValueMap.put(columnName,DateUtil.formatDateNoHour(studyExperience.getEndDate()));        
    //                    } else if (columnName.equals("studySchool")) {
    //                        entityValueMap.put(columnName,studyExperience.getStudySchool());
    //                    } else if (columnName.equals("degree")) {
    //                        entityValueMap.put(columnName,studyExperience.getDegree());
    //                    } else if (columnName.equals("degreeNo")) {
    //                        entityValueMap.put(columnName,studyExperience.getDegreeNo());
    //                    } else if (columnName.equals("educationLevel")) {
    //                        entityValueMap.put(columnName,studyExperience.getEducationLevel());
    //                    } else if (columnName.equals("educationNo")) {
    //                        entityValueMap.put(columnName,studyExperience.getEducationNo());
    //                    } else if (columnName.equals("specialtyCourses")) {
    //                        entityValueMap.put(columnName,studyExperience.getSpecialtyCourses());
    //                    } else if (columnName.equals("isHighestDegree")) {
    //                        Locale locale = PortalUtil.getHttpServletRequest(portletRequest).getLocale();
    //                        String str=LanguageUtil.get(PortletIDs.INITIALIZATION, locale, "No");
    //                        if(studyExperience.getIsHighestDegree()){
    //                            str = LanguageUtil.get(PortletIDs.INITIALIZATION, locale, "Yes");
    //                        }
    //                        entityValueMap.put(columnName, str);
    //                    } else if (columnName.equals("isHighestEducation")) {
    //                        Locale locale = PortalUtil.getHttpServletRequest(portletRequest).getLocale();
    //                        String str = LanguageUtil.get(PortletIDs.INITIALIZATION, locale, "No");
    //                        if(studyExperience.getIsHighestEducation()){
    //                            str = LanguageUtil.get(PortletIDs.INITIALIZATION, locale, "Yes");
    //                        }
    //                        entityValueMap.put(columnName, str);
    //                    } else if (columnName.equals("foreignLanguage")) {
    //                        entityValueMap.put(columnName, studyExperience.getForeignLanguage());
    //                    }else if (columnName.equals("foreignLanguageLevel")) {
    //                        entityValueMap.put(columnName,studyExperience.getForeignLanguageLevel());
    //                    }else if (columnName.equals("createDate")) {
    //                        entityValueMap.put(columnName,DateUtil.formatDateNoHour(studyExperience.getCreateDate()));
    //                    }else if (columnName.equals("strField1")){
    //                        entityValueMap.put(columnName, studyExperience.getStrField1());
    //                    } else if (columnName.equals("strField2")){
    //                        entityValueMap.put(columnName, studyExperience.getStrField2());
    //                    } else if (columnName.equals("strField3")){
    //                        entityValueMap.put(columnName, studyExperience.getStrField3());
    //                    } else if (columnName.equals("strField4")){
    //                        entityValueMap.put(columnName, studyExperience.getStrField4());
    //                    } else if (columnName.equals("strField5")){
    //                        entityValueMap.put(columnName, studyExperience.getStrField5());
    //                    } else if (columnName.equals("strField6")){
    //                        entityValueMap.put(columnName, studyExperience.getStrField6());
    //                    } else if (columnName.equals("textareaField1")){
    //                        entityValueMap.put(columnName, studyExperience.getTextareaField1());
    //                    } else if (columnName.equals("textareaField2")){
    //                        entityValueMap.put(columnName, studyExperience.getTextareaField2());
    //                    } else if (columnName.equals("textareaField3")){
    //                        entityValueMap.put(columnName, studyExperience.getTextareaField1());
    //                    } else if (columnName.equals("textareaField4")){
    //                        entityValueMap.put(columnName, studyExperience.getTextareaField2());
    //                    } else if (columnName.equals("floatField1")){
    //                        entityValueMap.put(columnName, String.valueOf(studyExperience.getFloatField1() == 0 ? "" : studyExperience.getFloatField1()));
    //                    } else if (columnName.equals("floatField2")){
    //                        entityValueMap.put(columnName, String.valueOf(studyExperience.getFloatField2() == 0 ? "" : studyExperience.getFloatField2()));
    //                    } else if (columnName.equals("floatField3")){
    //                        entityValueMap.put(columnName, String.valueOf(studyExperience.getFloatField3() == 0 ? "" : studyExperience.getFloatField3()));
    //                    } else if (columnName.equals("floatField4")){
    //                        entityValueMap.put(columnName, String.valueOf(studyExperience.getFloatField4() == 0 ? "" : studyExperience.getFloatField4()));
    //                    } else if (columnName.equals("dateField1")){
    //                        entityValueMap.put(columnName, DateUtil.formatDateNoHour(studyExperience.getDateField1()));
    //                    } else if (columnName.equals("dateField2")){
    //                        entityValueMap.put(columnName, DateUtil.formatDateNoHour(studyExperience.getDateField2()));
    //                    }
    //                }
    //            }
    //        }
    //        return entityValueMap;
    //    }
    
    //    public static Map<String, String> getEmployeeSkillsValue(PortletRequest portletRequest, Long employeeSkillsId) 
    //        throws PortalException, SystemException {
    //
    //        Map<String, String> entityValueMap = null;
    //        long companyId = PortalUtil.getCompanyId(portletRequest);
    //        if (employeeSkillsId > 0){
    //            EmployeeSkills employeeSkills=EmployeeSkillsLocalServiceUtil.getEmployeeSkills(employeeSkillsId);
    //            if (employeeSkills != null){
    //                List<CompanyColumnDefinition> companyColumns = CompanyColumnDefinitionLocalServiceUtil.searchByTableName(companyId, TableConst.CRM_EmployeeSkills, true);
    //                entityValueMap = new HashMap<String, String>();
    //                for (CompanyColumnDefinition companyColumn : companyColumns) {
    //                    String columnName = companyColumn.getColumnName();
    //                    if (columnName.equals("employeeId")) {
    //                        long employeeId=employeeSkills.getEmployeeId();
    //                        if(employeeId>0){
    //                            Employee employee=EmployeeLocalServiceUtil.getEmployee(employeeId);
    //                            entityValueMap.put(columnName, employee.getEmployeeName());
    //                        }else{
    //                            entityValueMap.put(columnName, StringPool.BLANK);                            
    //                        }
    //                    } else if (columnName.equals("skillId")) {
    //                        long skillId=employeeSkills.getSkillId();
    //                        if(skillId>0){
    //                            Skill skill=SkillLocalServiceUtil.getSkill(skillId);
    //                            entityValueMap.put(columnName,skill.getSkillName());                            
    //                        }else{
    //                            entityValueMap.put(columnName,StringPool.BLANK);                            
    //                        }
    //                    } else if (columnName.equals("obtainDate")) {
    //                        entityValueMap.put(columnName,DateUtil.formatDateNoHour(employeeSkills.getObtainDate()));        
    //                    } else if (columnName.equals("obtainType")) {
    //                        entityValueMap.put(columnName,employeeSkills.getObtainType());
    //                    } else if (columnName.equals("certificateNo")) {
    //                        entityValueMap.put(columnName,employeeSkills.getCertificateNo());
    //                    } else if (columnName.equals("description")) {
    //                        entityValueMap.put(columnName,employeeSkills.getDescription());
    //                    } else if (columnName.equals("strField1")){
    //                        entityValueMap.put(columnName, employeeSkills.getStrField1());
    //                    } else if (columnName.equals("strField2")){
    //                        entityValueMap.put(columnName, employeeSkills.getStrField2());
    //                    } else if (columnName.equals("strField3")){
    //                        entityValueMap.put(columnName, employeeSkills.getStrField3());
    //                    } else if (columnName.equals("strField4")){
    //                        entityValueMap.put(columnName, employeeSkills.getStrField4());
    //                    } else if (columnName.equals("strField5")){
    //                        entityValueMap.put(columnName, employeeSkills.getStrField5());
    //                    } else if (columnName.equals("strField6")){
    //                        entityValueMap.put(columnName, employeeSkills.getStrField6());
    //                    } else if (columnName.equals("textareaField1")){
    //                        entityValueMap.put(columnName, employeeSkills.getTextareaField1());
    //                    } else if (columnName.equals("textareaField2")){
    //                        entityValueMap.put(columnName, employeeSkills.getTextareaField2());
    //                    } else if (columnName.equals("textareaField3")){
    //                        entityValueMap.put(columnName, employeeSkills.getTextareaField1());
    //                    } else if (columnName.equals("textareaField4")){
    //                        entityValueMap.put(columnName, employeeSkills.getTextareaField2());
    //                    } else if (columnName.equals("floatField1")){
    //                        entityValueMap.put(columnName, String.valueOf(employeeSkills.getFloatField1() == 0 ? "" : employeeSkills.getFloatField1()));
    //                    } else if (columnName.equals("floatField2")){
    //                        entityValueMap.put(columnName, String.valueOf(employeeSkills.getFloatField2() == 0 ? "" : employeeSkills.getFloatField2()));
    //                    } else if (columnName.equals("floatField3")){
    //                        entityValueMap.put(columnName, String.valueOf(employeeSkills.getFloatField3() == 0 ? "" : employeeSkills.getFloatField3()));
    //                    } else if (columnName.equals("floatField4")){
    //                        entityValueMap.put(columnName, String.valueOf(employeeSkills.getFloatField4() == 0 ? "" : employeeSkills.getFloatField4()));
    //                    } else if (columnName.equals("dateField1")){
    //                        entityValueMap.put(columnName, DateUtil.formatDateNoHour(employeeSkills.getDateField1()));
    //                    } else if (columnName.equals("dateField2")){
    //                        entityValueMap.put(columnName, DateUtil.formatDateNoHour(employeeSkills.getDateField2()));
    //                    } 
    //                }
    //            }
    //        }
    //        return entityValueMap;
    //    }
    //    public static Map<String, String> getSkillValue(PortletRequest portletRequest, Long skillId) 
    //    throws PortalException, SystemException {
    //        
    //        Map<String, String> entityValueMap = null;
    //        long companyId = PortalUtil.getCompanyId(portletRequest);
    //        if (skillId > 0){
    //            Skill skill=SkillLocalServiceUtil.getSkill(skillId);
    //            if (skill != null){
    //                List<CompanyColumnDefinition> companyColumns = CompanyColumnDefinitionLocalServiceUtil.searchByTableName(companyId, TableConst.HRM_Skill, true);
    //                entityValueMap = new HashMap<String, String>();
    //                for (CompanyColumnDefinition companyColumn : companyColumns) {
    //                    String columnName = companyColumn.getColumnName();
    //                    if (columnName.equals("skillNo")) {
    //                        entityValueMap.put(columnName, skill.getSkillNo());
    //                    } else if (columnName.equals("skillName")) {
    //                        entityValueMap.put(columnName,skill.getSkillName());
    //                    } else if (columnName.equals("skillIndex")) {
    //                        entityValueMap.put(columnName,String.valueOf(skill.getSkillIndex()));        
    //                    } else if (columnName.equals("skillCategoryId")) {
    //                        entityValueMap.put(columnName,String.valueOf(skill.getSkillCategoryId()));
    //                    } else if (columnName.equals("description")) {
    //                        entityValueMap.put(columnName,skill.getDescription());
    //                    } else if (columnName.equals("strField1")){
    //                        entityValueMap.put(columnName, skill.getStrField1());
    //                    } else if (columnName.equals("strField2")){
    //                        entityValueMap.put(columnName, skill.getStrField2());
    //                    } else if (columnName.equals("strField3")){
    //                        entityValueMap.put(columnName, skill.getStrField3());
    //                    } else if (columnName.equals("strField4")){
    //                        entityValueMap.put(columnName, skill.getStrField4());
    //                    } else if (columnName.equals("strField5")){
    //                        entityValueMap.put(columnName, skill.getStrField5());
    //                    } else if (columnName.equals("strField6")){
    //                        entityValueMap.put(columnName, skill.getStrField6());
    //                    } else if (columnName.equals("textareaField1")){
    //                        entityValueMap.put(columnName, skill.getTextareaField1());
    //                    } else if (columnName.equals("textareaField2")){
    //                        entityValueMap.put(columnName, skill.getTextareaField2());
    //                    } else if (columnName.equals("textareaField3")){
    //                        entityValueMap.put(columnName, skill.getTextareaField1());
    //                    } else if (columnName.equals("textareaField4")){
    //                        entityValueMap.put(columnName, skill.getTextareaField2());
    //                    } else if (columnName.equals("floatField1")){
    //                        entityValueMap.put(columnName, String.valueOf(skill.getFloatField1() == 0 ? "" : skill.getFloatField1()));
    //                    } else if (columnName.equals("floatField2")){
    //                        entityValueMap.put(columnName, String.valueOf(skill.getFloatField2() == 0 ? "" : skill.getFloatField2()));
    //                    } else if (columnName.equals("floatField3")){
    //                        entityValueMap.put(columnName, String.valueOf(skill.getFloatField3() == 0 ? "" : skill.getFloatField3()));
    //                    } else if (columnName.equals("floatField4")){
    //                        entityValueMap.put(columnName, String.valueOf(skill.getFloatField4() == 0 ? "" : skill.getFloatField4()));
    //                    } else if (columnName.equals("dateField1")){
    //                        entityValueMap.put(columnName, DateUtil.formatDateNoHour(skill.getDateField1()));
    //                    } else if (columnName.equals("dateField2")){
    //                        entityValueMap.put(columnName, DateUtil.formatDateNoHour(skill.getDateField2()));
    //                    } 
    //                }
    //            }
    //        }
    //        return entityValueMap;
    //    }
    
        
        
    //    public static Map<String, String> getDepartmentValue(
    //            PortletRequest portletRequest, long departmentId) throws PortalException, SystemException{
    //        Map<String, String> map = null;
    //        Long companyId = PortalUtil.getCompanyId(portletRequest);
    //        if (departmentId > 0) {
    //            Department department = DepartmentLocalServiceUtil.getDepartment(departmentId);
    //            if (department != null) {
    //                List<CompanyColumnDefinition> list = CompanyColumnDefinitionLocalServiceUtil
    //                    .searchByTableName(companyId, TableConst.HRM_Department, true);
    //                map = new HashMap<String, String>();
    //                for(CompanyColumnDefinition columnDefinition : list){
    //                    String columnName = columnDefinition.getColumnName();
    //                    if (columnName.equals("departmentNo")) {
    //                        map.put(columnName, String.valueOf(department.getDepartmentNo()));
    //                    } else if (columnName.equals("departmentName")) {
    //                        map.put(columnName, String.valueOf(department.getDepartmentName()));
    //                    } else if (columnName.equals("departmentIndex")) {
    //                        map.put(columnName, String.valueOf(department.getDepartmentIndex()));
    //                    } else if (columnName.equals("departmentTel")) {
    //                        map.put(columnName, String.valueOf(department.getDepartmentTel()));
    //                    } else if (columnName.equals("departmentAddress")) {
    //                        map.put(columnName, String.valueOf(department.getDepartmentAddress()));
    //                    } else if (columnName.equals("departmentCategory")) {
    //                        map.put(columnName, String.valueOf(department.getDepartmentCategory()));
    //                    } else if (columnName.equals("parentDepartmentId")) {
    //                        long parentDepartmentId = department.getParentDepartmentId();
    //                        Department parentDepartment = null;
    //                        if (parentDepartmentId > 0) {
    //                            parentDepartment = DepartmentLocalServiceUtil.getDepartment(parentDepartmentId);
    //                        }
    //                        map.put(columnName, parentDepartment != null ? parentDepartment.getDepartmentName() : StringPool.BLANK);
    //                    }
    //                }
    //            }
    //        }
    //        return map;
    //    }
        
        public static void getPrefenceColumn(PortletRequest portletRequest)
            throws NumberFormatException, PortalException, SystemException {
            
            PortletPreferences preferences = portletRequest.getPreferences();
            String columnsIds = preferences.getValue("default.display.columns", "");
            List<CompanyColumnDefinition> tableHeader = null;
            if (!columnsIds.equals(StringPool.BLANK)) {
                String[] columnIdsArray = columnsIds.split(StringPool.COMMA);
                tableHeader = new ArrayList<CompanyColumnDefinition>();
                for (int i = 0; i < columnIdsArray.length; i++) {
                    CompanyColumnDefinition companyColumn = CompanyColumnDefinitionLocalServiceUtil
                    .getCompanyColumnDefinition(Long.valueOf(columnIdsArray[i]));
                    tableHeader.add(companyColumn);
                    
                }
            }
            portletRequest.setAttribute("tableHeader", tableHeader);
        }
      
    }

    3:需要用一个Validate.form.js这个文件。放在js文件夹下,因为我们需要前台写录入信息的时候需要验证。

    4:需要写一个初始化默认字段的一个类(需要写的是this.initializingXXXColumn(companyId))这个是写在CRM项目中去的,到时候我可以在Operator-portlet这个项目中直接用的。

    package com.ebizwindow.crm.init;
    
    import java.util.List;
    import java.util.Locale;
    
    import com.ebizwindow.crm.NoSuchTableDefinitionException;
    import com.ebizwindow.crm.constants.ColumnConst;
    import com.ebizwindow.crm.constants.FormConst;
    import com.ebizwindow.crm.constants.PortletIDs;
    import com.ebizwindow.crm.constants.PortletPropsValues;
    import com.ebizwindow.crm.constants.TableConst;
    import com.ebizwindow.crm.model.ColumnColumnGroupDefinition;
    import com.ebizwindow.crm.model.ColumnDefinition;
    import com.ebizwindow.crm.model.ColumnGroupDefinition;
    import com.ebizwindow.crm.model.TableDefinition;
    import com.ebizwindow.crm.service.ColumnColumnGroupDefinitionLocalServiceUtil;
    import com.ebizwindow.crm.service.ColumnDefinitionLocalServiceUtil;
    import com.ebizwindow.crm.service.ColumnGroupDefinitionLocalServiceUtil;
    import com.ebizwindow.crm.service.TableDefinitionLocalServiceUtil;
    import com.ebizwindow.crm.utils.IDGenerator;
    import com.ebizwindow.crm.utils.LanguageUtil;
    import com.ebizwindow.crm.utils.Validator;
    import com.liferay.portal.kernel.exception.PortalException;
    import com.liferay.portal.kernel.exception.SystemException;
    import com.liferay.portal.kernel.log.Log;
    import com.liferay.portal.kernel.log.LogFactoryUtil;
    import com.liferay.portal.model.Company;
    import com.liferay.portal.service.CompanyLocalServiceUtil;
    
    public class InitializingDefaultColumn {
    
        private static final int PC_COLUMN_GROUP_TYPE_DETAIL = 0;
        private static final int PC_COLUMN_GROUP_TYPE_EDIT = 1;
        
        private static final int ANDROID_COLUMN_GROUP_TYPE_DETAIL = 2;
        private static final int ANDROID_COLUMN_GROUP_TYPE_EDIT = 3;
    
        public static final boolean DISPALY_0 = false;
        public static final boolean DISPALY_1 = true;
    
        public void initializing(long companyId)
                throws SystemException, PortalException {
    
            this.initializingTableDefinition();
            this.initializingClueColumn(companyId);
            this.initializingMarketColumn(companyId);
            this.initializingCustomerColumn(companyId);
            this.initializingContactColumn(companyId);
            this.initializingOpportuntiyColumn(companyId);
            this.initializingQuotationColumn(companyId);
            this.initializingOrderColumn(companyId);
            this.initializingActivityColumn(companyId);
            this.initializingProductColumn(companyId);
            this.initializingContractColumn(companyId);
            this.initializingOperatorColumn(companyId);
            this.initializingRPlan(companyId);
            this.initializingRRecord(companyId);
            this.initializingProjectColumn(companyId);
            
            this.initializingCreditRightsColumn(companyId);
            
            this.initializingEmployeeColumn(companyId);
            
            
            
            _log.debug("Initializing Default Column Successfully ...");
        }
    
        
        private void initializingEmployeeColumn(long companyId) throws SystemException, PortalException {
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(TableConst.CRM_Employee);
    
            Company company = CompanyLocalServiceUtil.getCompany(companyId); 
            Locale locale = company.getLocale();
            
            String[] selectType = ColumnConst.employee_select_columns;
            String[] integerType = ColumnConst.employee_integer_columns;
            String[] textType = ColumnConst.employee_text_columns;
            String[] pkType = ColumnConst.employee_pk_columns;
            String[] textareaType = ColumnConst.employee_textarea_columns;
            String[] dateType = ColumnConst.employee_date_columns;
            
            for (int i = 0; i < selectType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(selectType[i].substring(selectType[i].length() - 2));
                String columnName = selectType[i].substring(0, selectType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Employee, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                    .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("employee." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.select);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                    .updateColumnDefinition(columnDefinition);
                }
            }
    
            for (int i = 0; i < integerType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(integerType[i].substring(integerType[i].length() - 2));
                String columnName = integerType[i].substring(0, integerType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Employee, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("employee." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.integer_);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                }
            }
    
            for (int i = 0; i < textType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textType[i].substring(textType[i].length() - 2));
                String columnName = textType[i].substring(0,textType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Employee, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("employee." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.text);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
    
                    if (columnName.equals("employeeName")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition.setVerifyTips(LanguageUtil.get(PortletIDs.INITIALIZATION,
                                locale, FormConst.VERIFY_NOT_NULL_TIPS));
                    }
                    
                    if (columnName.equals("departmentName") || columnName.equals("positionName")) {
                        columnDefinition.setIsDisplayInPage(DISPALY_0);
                    } else {
                        columnDefinition.setIsDisplayInPage(DISPALY_0);
                    }
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
    
                }
            }
    
            for (int i = 0; i < pkType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(pkType[i].substring(pkType[i].length() - 2));
                String columnName = pkType[i].substring(0,pkType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Employee, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("employee." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.pk);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                }
            }
            
            for (int i = 0; i < textareaType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textareaType[i].substring(textareaType[i].length() - 2));
                String columnName = textareaType[i].substring(0, textareaType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Employee, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition
                            .setDefaultDisplayName("employee." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.textarea);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                }
            }
            
            for (int i = 0; i < dateType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(dateType[i].substring(dateType[i].length() - 2));
                String columnName = dateType[i].substring(0,dateType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Employee, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition
                            .setDefaultDisplayName("employee." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.date);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                }
            }
    
            for (int i = 1; i < 7; i++) {
                String columnName = "strField" + i;
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Employee, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultFormType(FormConst.text);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_0);
                    columnDefinition.setDisplayInEditPage(DISPALY_0);
                    columnDefinition.setIsDisplayInPage(DISPALY_0);
                    columnDefinition.setIsCustom(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                        .updateColumnDefinition(columnDefinition);
                }
            }
            
            for (int i = 1; i < 3; i++) {
                String columnName = "textareaField" + i;
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Employee, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName("textareaField" + i);
                    columnDefinition.setDefaultFormType(FormConst.textarea);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_0);
                    columnDefinition.setDisplayInEditPage(DISPALY_0);
                    columnDefinition.setIsDisplayInPage(DISPALY_0);
                    columnDefinition.setIsCustom(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                }
            }
    
            for (int i = 1; i < 4; i++) {
                String columnName = "floatField" + i;
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Employee, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName("floatField" + i);
                    columnDefinition.setDefaultFormType(FormConst.float_);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_0);
                    columnDefinition.setDisplayInEditPage(DISPALY_0);
                    columnDefinition.setIsDisplayInPage(DISPALY_0);
                    columnDefinition.setIsCustom(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                }
            }
    
            for (int i = 1; i < 4; i++) {
                String columnName = "dateField" + i;
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Employee, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName("dateField" + i);
                    columnDefinition.setDefaultFormType(FormConst.date);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_0);
                    columnDefinition.setDisplayInEditPage(DISPALY_0);
                    columnDefinition.setIsDisplayInPage(DISPALY_0);
                    columnDefinition.setIsCustom(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                }
            }
            
            String[] notDisplayInEditPage = ColumnConst.employee_editpage_invisible_columns;
            for (int i = 0; i < notDisplayInEditPage.length; i++) {
                String columnName = notDisplayInEditPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Employee, columnName);
                columnDefinition.setDisplayInEditPage(DISPALY_0);
                ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition, true);
            }
    
            String[] notDisplayInDetailPage = ColumnConst.employee_detailpage_invisible_columns;
            for (int i = 0; i < notDisplayInDetailPage.length; i++) {
                String columnName = notDisplayInDetailPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Employee, columnName);
                columnDefinition.setDisplayInDetailPage(DISPALY_0);
                ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition, true);
            }
    
            ColumnGroupDefinition baseGroupColumn_Edit = createBaseGroup_Edit(TableConst.CRM_Employee, locale);
            ColumnGroupDefinition baseGroupColumn_Detail = createBaseGroup_Detail(TableConst.CRM_Employee, locale);
            ColumnGroupDefinition contactGroupColumn_Edit = createContactGroup_Edit(TableConst.CRM_Employee, locale);
            ColumnGroupDefinition contactGroupColumn_Detail = createContactGroup_Detail(TableConst.CRM_Employee, locale);
            ColumnGroupDefinition accountGroupColumn_Edit = createAccountGroup_Edit(TableConst.CRM_Employee, locale);
            ColumnGroupDefinition accountGroupColumn_Detail = createAccountGroup_Detail(TableConst.CRM_Employee, locale);
    
            String[] baseGroupColumns = ColumnConst.employee_base_group_columns;
            for (int i = 0; i < baseGroupColumns.length; i++) {
                String columnName = baseGroupColumns[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Employee, columnName);
                ColumnColumnGroupDefinition columnColumnGroupInDetailPage = ColumnColumnGroupDefinitionLocalServiceUtil
                    .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                columnColumnGroupInDetailPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                columnColumnGroupInDetailPage.setColumnGroupDefinitionId(baseGroupColumn_Detail.getColumnGroupDefinitionId());
                ColumnColumnGroupDefinitionLocalServiceUtil.updateColumnColumnGroupDefinition(columnColumnGroupInDetailPage);
    
                ColumnColumnGroupDefinition columnColumnGroupInEditPage = ColumnColumnGroupDefinitionLocalServiceUtil
                    .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                columnColumnGroupInEditPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                columnColumnGroupInEditPage.setColumnGroupDefinitionId(baseGroupColumn_Edit.getColumnGroupDefinitionId());
                ColumnColumnGroupDefinitionLocalServiceUtil.updateColumnColumnGroupDefinition(columnColumnGroupInEditPage);
            }
    
            String[] contactGroupColumns = ColumnConst.employee_contact_group_columns;
            for (int i = 0; i < contactGroupColumns.length; i++) {
                String columnName = contactGroupColumns[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Employee, columnName);
                ColumnColumnGroupDefinition columnColumnGroupInDetailPage = ColumnColumnGroupDefinitionLocalServiceUtil
                    .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                columnColumnGroupInDetailPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                columnColumnGroupInDetailPage.setColumnGroupDefinitionId(contactGroupColumn_Detail.getColumnGroupDefinitionId());
                ColumnColumnGroupDefinitionLocalServiceUtil.updateColumnColumnGroupDefinition(columnColumnGroupInDetailPage);
    
                ColumnColumnGroupDefinition columnColumnGroupInEditPage = ColumnColumnGroupDefinitionLocalServiceUtil
                    .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                columnColumnGroupInEditPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                columnColumnGroupInEditPage.setColumnGroupDefinitionId(contactGroupColumn_Edit.getColumnGroupDefinitionId());
                ColumnColumnGroupDefinitionLocalServiceUtil.updateColumnColumnGroupDefinition(columnColumnGroupInEditPage);
            }
    
            String[] accountGroupColumns = ColumnConst.employee_account_group_columns;
            for (int i = 0; i < accountGroupColumns.length; i++) {
                String columnName = accountGroupColumns[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Employee, columnName);
                ColumnColumnGroupDefinition columnColumnGroupInDetailPage = ColumnColumnGroupDefinitionLocalServiceUtil
                    .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                columnColumnGroupInDetailPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                columnColumnGroupInDetailPage.setColumnGroupDefinitionId(accountGroupColumn_Detail.getColumnGroupDefinitionId());
                ColumnColumnGroupDefinitionLocalServiceUtil.updateColumnColumnGroupDefinition(columnColumnGroupInDetailPage);
    
                ColumnColumnGroupDefinition columnColumnGroupInEditPage = ColumnColumnGroupDefinitionLocalServiceUtil
                    .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                columnColumnGroupInEditPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                columnColumnGroupInEditPage.setColumnGroupDefinitionId(accountGroupColumn_Edit.getColumnGroupDefinitionId());
                ColumnColumnGroupDefinitionLocalServiceUtil.updateColumnColumnGroupDefinition(columnColumnGroupInEditPage);
            }
        }
    
        private ColumnGroupDefinition createBaseGroup_Edit(
                String tableName, Locale locale) throws SystemException, NoSuchTableDefinitionException {
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(tableName);
            String groupDisplayName = LanguageUtil.get(PortletIDs.INITIALIZATION,
                    locale, PortletPropsValues.COLUMN_GROUP_BASE);
            
            ColumnGroupDefinition columnEditGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(tableDefinitionId, groupDisplayName, 1);
            ColumnGroupDefinition columnGroupInEditPage = columnEditGroup;
            if (columnEditGroup == null){
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil
                .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInEditPage.setDisplayIndex(0);
                columnGroupInEditPage.setIsDisplay(DISPALY_1);
                columnGroupInEditPage.setGroupDisplayName(groupDisplayName);
                columnGroupInEditPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInEditPage.setGroupType(1);
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil.updateColumnGroupDefinition(columnGroupInEditPage);
            }
            return columnGroupInEditPage;
        }
        
        private ColumnGroupDefinition createBaseGroup_Detail(
                String tableName, Locale locale) throws PortalException, SystemException {
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(tableName);
            String groupDisplayName = LanguageUtil.get(PortletIDs.INITIALIZATION,
                    locale, PortletPropsValues.COLUMN_GROUP_BASE);
            ColumnGroupDefinition columnDetailGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(tableDefinitionId, groupDisplayName, 0);
            ColumnGroupDefinition columnGroupInDetailPage = columnDetailGroup;
            if (columnDetailGroup == null){
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil
                .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInDetailPage.setDisplayIndex(0);
                columnGroupInDetailPage.setIsDisplay(DISPALY_1);
                columnGroupInDetailPage.setGroupDisplayName(groupDisplayName);
                columnGroupInDetailPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInDetailPage.setGroupType(0);
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil.updateColumnGroupDefinition(columnGroupInDetailPage);
            }
            return columnGroupInDetailPage;
        }
        
        private ColumnGroupDefinition createContactGroup_Edit(
                String tableName, Locale locale) throws SystemException, NoSuchTableDefinitionException {
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(tableName);
            String groupDisplayName = LanguageUtil.get(PortletIDs.INITIALIZATION,
                    locale, "column.group.contact");
            
            ColumnGroupDefinition columnEditGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(tableDefinitionId, groupDisplayName, 1);
            ColumnGroupDefinition columnGroupInEditPage = columnEditGroup;
            if (columnEditGroup == null){
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil
                    .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInEditPage.setDisplayIndex(1);
                columnGroupInEditPage.setIsDisplay(DISPALY_1);
                columnGroupInEditPage.setGroupDisplayName(groupDisplayName);
                columnGroupInEditPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInEditPage.setGroupType(1);
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil.updateColumnGroupDefinition(columnGroupInEditPage);
            }
            return columnGroupInEditPage;
        }
        
        private ColumnGroupDefinition createContactGroup_Detail(
                String tableName, Locale locale) throws PortalException, SystemException {
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(tableName);
            String groupDisplayName = LanguageUtil.get(PortletIDs.INITIALIZATION, locale, "column.group.contact");
            ColumnGroupDefinition columnDetailGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(tableDefinitionId, groupDisplayName, 0);
            ColumnGroupDefinition columnGroupInDetailPage = columnDetailGroup;
            if (columnDetailGroup == null){
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil
                    .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInDetailPage.setDisplayIndex(1);
                columnGroupInDetailPage.setIsDisplay(DISPALY_1);
                columnGroupInDetailPage.setGroupDisplayName(groupDisplayName);
                columnGroupInDetailPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInDetailPage.setGroupType(0);
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil.updateColumnGroupDefinition(columnGroupInDetailPage);
            }
            return columnGroupInDetailPage;
        }
        
        private ColumnGroupDefinition createAccountGroup_Edit(
                String tableName, Locale locale) throws SystemException, NoSuchTableDefinitionException {
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(tableName);
            String groupDisplayName = LanguageUtil.get(PortletIDs.INITIALIZATION,
                    locale, "column.group.account");
            
            ColumnGroupDefinition columnEditGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(tableDefinitionId, groupDisplayName, 1);
            ColumnGroupDefinition columnGroupInEditPage = columnEditGroup;
            if (columnEditGroup == null){
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil
                        .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInEditPage.setDisplayIndex(2);
                columnGroupInEditPage.setIsDisplay(DISPALY_1);
                columnGroupInEditPage.setGroupDisplayName(groupDisplayName);
                columnGroupInEditPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInEditPage.setGroupType(1);
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil.updateColumnGroupDefinition(columnGroupInEditPage);
            }
            return columnGroupInEditPage;
        }
    
        private ColumnGroupDefinition createAccountGroup_Detail(
                String tableName, Locale locale) throws PortalException, SystemException {
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(tableName);
            String groupDisplayName = LanguageUtil.get(PortletIDs.INITIALIZATION,
                    locale, "column.group.account");
            ColumnGroupDefinition columnDetailGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(tableDefinitionId, groupDisplayName, 0);
            ColumnGroupDefinition columnGroupInDetailPage = columnDetailGroup;
            if (columnDetailGroup == null){
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil
                    .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInDetailPage.setDisplayIndex(2);
                columnGroupInDetailPage.setIsDisplay(DISPALY_1);
                columnGroupInDetailPage.setGroupDisplayName(groupDisplayName);
                columnGroupInDetailPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInDetailPage.setGroupType(0);
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil.updateColumnGroupDefinition(columnGroupInDetailPage);
            }
            return columnGroupInDetailPage;
        }
        
        
        
        
        
        private void initializingTableDefinition() throws SystemException,
                NoSuchTableDefinitionException {
    
            String[] tableName = new String[] { TableConst.CRM_Market,
                    TableConst.CRM_Customer, TableConst.CRM_Contact,
                    TableConst.CRM_Clue, TableConst.CRM_Opportunity,
                    TableConst.CRM_Quotation, TableConst.CRM_Activity,
                    TableConst.CRM_Product, TableConst.CRM_Contract,
                    TableConst.OPERATOR_Department, TableConst.OPERATOR_Operator,
                    TableConst.CRM_Order, TableConst.CRM_RPLAN, TableConst.CRM_RRECORD,
                    TableConst.CRM_Project,TableConst.CR_CreditRights,TableConst.CRM_Employee
            };
    
            for (int i = 0; i < tableName.length; i++) {
                long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(tableName[i]);
                if (tableDefinitionId <= 0) {
                    TableDefinition tableDefinition = TableDefinitionLocalServiceUtil
                        .createTableDefinition(IDGenerator.increment(TableDefinition.class.getName()));
                    tableDefinition.setTableName(tableName[i]);
                    TableDefinitionLocalServiceUtil.addTableDefinition(tableDefinition);
                }
            }
        }
        
        private void initializingCreditRightsColumn(long companyId) throws PortalException,SystemException{
            Company company = CompanyLocalServiceUtil.getCompany(companyId);
            Locale locale = company.getLocale();
    
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(TableConst.CR_CreditRights);
            String groupDisplayName = LanguageUtil.get(PortletIDs.INITIALIZATION, locale, PortletPropsValues.COLUMN_GROUP_BASE);
            
            ColumnGroupDefinition columnDetailGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(groupDisplayName, tableDefinitionId, 0);
            ColumnGroupDefinition columnGroupInDetailPage = columnDetailGroup;
            if (columnDetailGroup == null){
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil.createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInDetailPage.setDisplayIndex(0);
                columnGroupInDetailPage.setIsDisplay(DISPALY_1);
                columnGroupInDetailPage.setGroupDisplayName(groupDisplayName);
                columnGroupInDetailPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInDetailPage.setGroupType(PC_COLUMN_GROUP_TYPE_DETAIL);
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil.updateColumnGroupDefinition(columnGroupInDetailPage);
            }
            
            ColumnGroupDefinition columnEditGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(groupDisplayName, tableDefinitionId, 1);
            ColumnGroupDefinition columnGroupInEditPage = columnEditGroup;
            if (columnEditGroup == null){
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil.createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInEditPage.setDisplayIndex(0);
                columnGroupInEditPage.setIsDisplay(DISPALY_1);
                columnGroupInEditPage.setGroupDisplayName(groupDisplayName);
                columnGroupInEditPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInEditPage.setGroupType(PC_COLUMN_GROUP_TYPE_EDIT);
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil.updateColumnGroupDefinition(columnGroupInEditPage);
            }
    
            String[] dateType = ColumnConst.CREDITRIGHTS_DATE_TYPE;
            String[] selectType = ColumnConst.CREDITRIGHTS_SELECT_TYPE;
            String[] textType = ColumnConst.CREDITRIGHTS_TEXT_TYPE;
            String[] pkType = ColumnConst.CREDITRIGHTS_PK_TYPE;
            String[] doubleType = ColumnConst.CREDITRIGHTS_DOUBLE_TYPE;
            String[] textAreaType = ColumnConst.CREDITRIGHTS_TEXTAREA_TYPE;
            String[] integerType = ColumnConst.CREDITRIGHTS_INTEGER_TYPE;
            String[] booleanType = ColumnConst.CREDITRIGHTS_INTEGER_TYPE;
            
            
            for (int i = 0; i < booleanType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(booleanType[i].substring(booleanType[i].length() - 2));
                String columnName = booleanType[i].substring(0, booleanType[i].length() - 2);
                
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CR_CreditRights, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("creditRights."+columnName);
                    columnDefinition.setDefaultFormType(FormConst.boolean_);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
        
                    if (columnName.equals("isActive")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition
                                .setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
        
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
        
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(), columnGroupInEditPage.getColumnGroupDefinitionId(),columnGroupInDetailPage.getColumnGroupDefinitionId());
        
                } else {
                    _log.info(TableConst.CR_CreditRights + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < dateType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(dateType[i].substring(dateType[i].length() - 2));
                String columnName = dateType[i].substring(0, dateType[i].length() - 2);
                
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CR_CreditRights, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("creditRights."+columnName);
                    columnDefinition.setDefaultFormType(FormConst.date);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
        
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CR_CreditRights + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < selectType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(selectType[i].substring(selectType[i].length() - 2));
                String columnName = selectType[i].substring(0, selectType[i].length() - 2);
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CR_CreditRights, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("creditRights."+columnName);
                    columnDefinition.setDefaultFormType(FormConst.select);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    if (columnName.equals("creditRightsAge")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition
                                .setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
        
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
        
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(), columnGroupInEditPage.getColumnGroupDefinitionId(),columnGroupInDetailPage.getColumnGroupDefinitionId());
        
                } else {
                    _log.info(TableConst.CR_CreditRights + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < textType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textType[i].substring(textType[i].length() - 2));
                String columnName = textType[i].substring(0, textType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CR_CreditRights, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("creditRights."+columnName);
                    columnDefinition.setDefaultFormType(FormConst.text);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
        
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(), columnGroupInEditPage.getColumnGroupDefinitionId(),columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CR_CreditRights + " - " + columnName + " is exists...");
                }
            }
            
            
            for (int i = 0; i < pkType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(pkType[i].substring(pkType[i].length() - 2));
                String columnName = pkType[i].substring(0, pkType[i].length() - 2);
                
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CR_CreditRights, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("creditRights."+columnName);
                    columnDefinition.setDefaultFormType(FormConst.pk);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CR_CreditRights + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < doubleType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(doubleType[i].substring(doubleType[i].length() - 2));
                String columnName = doubleType[i].substring(0, doubleType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CR_CreditRights, columnName);
                if (entity == null) {
                    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("creditRights." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.double_);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),columnGroupInEditPage.getColumnGroupDefinitionId(),columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CR_CreditRights + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < textAreaType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textAreaType[i].substring(textAreaType[i].length() - 2));
                String columnName = textAreaType[i].substring(0, textAreaType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CR_CreditRights, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition
                            .setDefaultDisplayName("creditRights." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.textarea);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                } else {
                    _log.info(TableConst.CR_CreditRights + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < integerType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(integerType[i].substring(integerType[i].length() - 2));
                String columnName = integerType[i].substring(0, integerType[i].length() - 2);
                
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CR_CreditRights, columnName);
                if (entity == null) {
                    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("creditRights."+columnName);
                    columnDefinition.setDefaultFormType(FormConst.text);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(), columnGroupInEditPage.getColumnGroupDefinitionId(),columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CR_CreditRights + " - " + columnName + " is exists...");
                }
            }
            
            this.initConfigField(tableDefinitionId,TableConst.CR_CreditRights);
    
            String[] notDisplayInEditPage = ColumnConst.CREDITRIGHTS_NOT_DISPLAY_IN_EDIT_PAGE;
            String[] notUseInDetailPage = ColumnConst.CREDITRIGHTS_NOT_USE_IN_DEFAIL_PAGE;
    
            for (int i = 0; i < notDisplayInEditPage.length; i++) {
                String columnName = notDisplayInEditPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                    .searchByColumnName(TableConst.CR_CreditRights, columnName);
                columnDefinition.setDisplayInEditPage(false);
                ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition, true);
            }
            for (int i = 0; i < notUseInDetailPage.length; i++) {
                String columnName = notUseInDetailPage[i];
                
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CR_CreditRights, columnName);
                long columnId = columnDefinition.getColumnDefinitionId();
                List<ColumnColumnGroupDefinition> cccgds = ColumnColumnGroupDefinitionLocalServiceUtil.searchByColumnDefinitionId(columnId);
                if (Validator.isNotNull(cccgds)) {
                    for (ColumnColumnGroupDefinition cccgd : cccgds) {
                        long columnGroupId = cccgd.getColumnGroupDefinitionId();
                        ColumnGroupDefinition columnGroup = ColumnGroupDefinitionLocalServiceUtil
                                .getColumnGroupDefinition(columnGroupId);
                        if (columnGroup.getGroupType() == 0) {
                            ColumnColumnGroupDefinitionLocalServiceUtil
                                    .deleteColumnColumnGroupDefinition(cccgd);
                        }
                    }
                }
            }
            
        }
    
        private void initializingProjectColumn(long companyId) throws PortalException, SystemException {
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(TableConst.CRM_Project);
            String[] projectTextType = ColumnConst.PROJECT_TEXT_TYPE;
            String[] projectSelectType = ColumnConst.PROJECT_SELECT_TYPE;
            String[] projectDateType = ColumnConst.PROJECT_DATE_TYPE;
            String[] projectDoubleType = ColumnConst.PROJECT_DOUBLE_TYPE;
            String[] projectTextareaType = ColumnConst.PROJECT_TEXTAREA_TYPE;
            String[] projectPkType = ColumnConst.PROJECT_PK_TYPE;
            String[] projectBooleanType = ColumnConst.PROJECT_BOOLEAN_TYPE;
    
            for (int i = 0; i < projectBooleanType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(projectBooleanType[i].substring(projectBooleanType[i].length() - 2));
                String columnName = projectBooleanType[i].substring(0, projectBooleanType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Project, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("project." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.boolean_);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                } else {
                    _log.info(TableConst.CRM_Project + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < projectPkType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(projectPkType[i].substring(projectPkType[i].length() - 2));
                String columnName = projectPkType[i].substring(0, projectPkType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Project, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("project." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.pk);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                } else {
                    _log.info(TableConst.CRM_Project + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < projectTextType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(projectTextType[i].substring(projectTextType[i].length() - 2));
                String columnName = projectTextType[i].substring(0, projectTextType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Project, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("project." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.text);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                } else {
                    _log.info(TableConst.CRM_Project + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < projectSelectType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(projectSelectType[i].substring(projectSelectType[i].length() - 2));
                String columnName = projectSelectType[i].substring(0, projectSelectType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Project, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("project." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.select);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                } else {
                    _log.info(TableConst.CRM_Project + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < projectDateType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(projectDateType[i].substring(projectDateType[i].length() - 2));
                String columnName = projectDateType[i].substring(0, projectDateType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Project, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("project." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.date);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                } else {
                    _log.info(TableConst.CRM_Project + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < projectDoubleType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(projectDoubleType[i].substring(projectDoubleType[i].length() - 2));
                String columnName = projectDoubleType[i].substring(0, projectDoubleType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Project, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("project." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.float_);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                } else {
                    _log.info(TableConst.CRM_Project + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < projectTextareaType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(projectTextareaType[i].substring(projectTextareaType[i].length() - 2));
                String columnName = projectTextareaType[i].substring(0, projectTextareaType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Project, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("project." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.textarea);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                } else {
                    _log.info(TableConst.CRM_Project + " - " + columnName + " is exists...");
                }
            }
            
            this.initConfigField(tableDefinitionId, TableConst.CRM_Project);
            
            Locale locale = CompanyLocalServiceUtil.getCompany(companyId).getLocale(); 
            ColumnGroupDefinition baseGroupColumn_Edit = createColumnGroup(TableConst.CRM_Project, locale, PC_COLUMN_GROUP_TYPE_EDIT, PortletPropsValues.COLUMN_GROUP_BASE);
            ColumnGroupDefinition baseGroupColumn_Detail = createColumnGroup(TableConst.CRM_Project, locale, PC_COLUMN_GROUP_TYPE_DETAIL, PortletPropsValues.COLUMN_GROUP_BASE);
            
            List<ColumnColumnGroupDefinition> columnColumnGroup = ColumnColumnGroupDefinitionLocalServiceUtil
                    .searchByColumnGroupDefinitionId(baseGroupColumn_Detail.getColumnGroupDefinitionId());
            if (!Validator.isNotNull(columnColumnGroup)) {
                String[] baseGroupColumns = ColumnConst.PROJECT_BASE_GROUP_COLUMN;
                for (int i = 0; i < baseGroupColumns.length; i++) {
                    String columnName = baseGroupColumns[i];
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Project, columnName);
                    ColumnColumnGroupDefinition columnColumnGroupInDetailPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInDetailPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInDetailPage.setColumnGroupDefinitionId(baseGroupColumn_Detail.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.updateColumnColumnGroupDefinition(columnColumnGroupInDetailPage);
            
                    ColumnColumnGroupDefinition columnColumnGroupInEditPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInEditPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInEditPage.setColumnGroupDefinitionId(baseGroupColumn_Edit.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.updateColumnColumnGroupDefinition(columnColumnGroupInEditPage);
                }
            }
            
            String[] notDisplayInEditPage = ColumnConst.PROJECT_NOT_DISPLAY_IN_EDIT_PAGE;
            for (int i = 0; i < notDisplayInEditPage.length; i++) {
                String columnName = notDisplayInEditPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Project, columnName);
                columnDefinition.setDisplayInEditPage(false);
                ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition, true);
            }
            
            String[] notDisplayInDetailPage = ColumnConst.PROJECT_NOT_DISPLAY_IN_DETAIL_PAGE;
            for (int i = 0; i < notDisplayInDetailPage.length; i++) {
                String columnName = notDisplayInEditPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Project, columnName);
                columnDefinition.setDisplayInDetailPage(false);
                ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition, true);
            }
        }
    
        private void initializingCustomerColumn(long companyId) throws SystemException, PortalException {
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(TableConst.CRM_Customer);
    
            String[] selectType = ColumnConst.CUSTOMER_SELECT_TYPE;
            String[] textType = ColumnConst.CUSTOMER_TEXT_TYPE;
            String[] pkType = ColumnConst.CUSTOMER_PK_TYPE;
            String[] textareaType = ColumnConst.CUSTOMER_TEXTAREA_TYPE;
            String[] dateType = ColumnConst.CUSTOMER_DATE_TYPE;
            String[] floatType = ColumnConst.CUSTOMER_FLOAT_TYPE;
    
            for (int i = 0; i < selectType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(selectType[i].substring(selectType[i].length() - 2));
                String columnName = selectType[i].substring(0, selectType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Customer, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("customer." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.select);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                } else {
                    _log.info(TableConst.CRM_Customer + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < textType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textType[i].substring(textType[i].length() - 2));
                String columnName = textType[i].substring(0,textType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Customer, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("customer." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.text);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
    
                    if (columnName.equals("customerName") || columnName.equals("code")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition.setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                } else {
                    _log.info(TableConst.CRM_Customer + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < pkType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(pkType[i].substring(pkType[i].length() - 2));
                String columnName = pkType[i].substring(0,pkType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Customer, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("customer." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.pk);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                } else {
                    _log.info(TableConst.CRM_Customer + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < textareaType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textareaType[i].substring(textareaType[i].length() - 2));
                String columnName = textareaType[i].substring(0, textareaType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Customer, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition
                            .setDefaultDisplayName("customer." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.textarea);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                } else {
                    _log.info(TableConst.CRM_Customer + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < dateType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(dateType[i].substring(dateType[i].length() - 2));
                String columnName = dateType[i].substring(0,dateType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Customer, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition
                            .setDefaultDisplayName("customer." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.date);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                } else {
                    _log.info(TableConst.CRM_Customer + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < floatType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(floatType[i].substring(floatType[i].length() - 2));
                String columnName = floatType[i].substring(0,floatType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Customer, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("customer." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.float_);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
    
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                } else {
                    _log.info(TableConst.CRM_Customer + " - " + columnName + " is exists...");
                }
            }
    
            this.initConfigField(tableDefinitionId,TableConst.CRM_Customer);
    
            Locale locale = CompanyLocalServiceUtil.getCompany(companyId).getLocale(); 
            ColumnGroupDefinition baseGroupColumn_Edit = createColumnGroup(TableConst.CRM_Customer, locale, PC_COLUMN_GROUP_TYPE_EDIT, PortletPropsValues.COLUMN_GROUP_BASE);
            ColumnGroupDefinition baseGroupColumn_Detail = createColumnGroup(TableConst.CRM_Customer, locale, PC_COLUMN_GROUP_TYPE_DETAIL, PortletPropsValues.COLUMN_GROUP_BASE);
            ColumnGroupDefinition contactGroupColumn_Edit = createColumnGroup(TableConst.CRM_Customer, locale, PC_COLUMN_GROUP_TYPE_EDIT, PortletPropsValues.COLUMN_GROUP_CONTACT);
            ColumnGroupDefinition contactGroupColumn_Detail = createColumnGroup(TableConst.CRM_Customer, locale, PC_COLUMN_GROUP_TYPE_DETAIL, PortletPropsValues.COLUMN_GROUP_CONTACT);
    
            List<ColumnColumnGroupDefinition> columnColumnGroup = ColumnColumnGroupDefinitionLocalServiceUtil
                    .searchByColumnGroupDefinitionId(baseGroupColumn_Detail.getColumnGroupDefinitionId());
            if (!Validator.isNotNull(columnColumnGroup)) {
                String[] baseGroupColumns = ColumnConst.CUSTOMER_BASE_GROUP_COLUMNS;
                for (int i = 0; i < baseGroupColumns.length; i++) {
                    String columnName = baseGroupColumns[i];
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Customer, columnName);
                    ColumnColumnGroupDefinition columnColumnGroupInDetailPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInDetailPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInDetailPage.setColumnGroupDefinitionId(baseGroupColumn_Detail.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.updateColumnColumnGroupDefinition(columnColumnGroupInDetailPage);
    
                    ColumnColumnGroupDefinition columnColumnGroupInEditPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInEditPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInEditPage.setColumnGroupDefinitionId(baseGroupColumn_Edit.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.updateColumnColumnGroupDefinition(columnColumnGroupInEditPage);
                }
    
                String[] contactGroupColumns = ColumnConst.CUSTOMER_CONTACT_GROUP_COLUMNS;
                for (int i = 0; i < contactGroupColumns.length; i++) {
                    String columnName = contactGroupColumns[i];
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Customer, columnName);
                    ColumnColumnGroupDefinition columnColumnGroupInDetailPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInDetailPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInDetailPage.setColumnGroupDefinitionId(contactGroupColumn_Detail.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.updateColumnColumnGroupDefinition(columnColumnGroupInDetailPage);
    
                    ColumnColumnGroupDefinition columnColumnGroupInEditPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInEditPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInEditPage.setColumnGroupDefinitionId(contactGroupColumn_Edit.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.updateColumnColumnGroupDefinition(columnColumnGroupInEditPage);
                }
            }
    
            String[] notUseInDetailPage = ColumnConst.CUSTOMER_NOT_USE_IN_DETAIL_PAGE;
            for (int i = 0; i < notUseInDetailPage.length; i++) {
                String columnName = notUseInDetailPage[i];
    
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Customer, columnName);
                long columnId = columnDefinition.getColumnDefinitionId();
                List<ColumnColumnGroupDefinition> cccgds = ColumnColumnGroupDefinitionLocalServiceUtil.searchByColumnDefinitionId(columnId);
                if (Validator.isNotNull(cccgds)) {
                    for (ColumnColumnGroupDefinition cccgd : cccgds) {
                        long columnGroupId = cccgd.getColumnGroupDefinitionId();
                        ColumnGroupDefinition columnGroup = ColumnGroupDefinitionLocalServiceUtil
                                .getColumnGroupDefinition(columnGroupId);
                        if (columnGroup.getGroupType() == 0) {
                            ColumnColumnGroupDefinitionLocalServiceUtil
                                    .deleteColumnColumnGroupDefinition(cccgd);
                        }
                    }
                }
            }
    
            ColumnGroupDefinition baseColumnGroup_edit_4_android = createGroup4Android(TableConst.CRM_Customer, locale, ANDROID_COLUMN_GROUP_TYPE_EDIT, PortletPropsValues.COLUMN_GROUP_BASE, 0);
            ColumnGroupDefinition baseColumnGroup_detail_4_android = createGroup4Android(TableConst.CRM_Customer, locale, ANDROID_COLUMN_GROUP_TYPE_DETAIL, PortletPropsValues.COLUMN_GROUP_BASE, 0);
            ColumnGroupDefinition contactColumnGroup_edit_4_android = createGroup4Android(TableConst.CRM_Customer, locale, ANDROID_COLUMN_GROUP_TYPE_EDIT, PortletPropsValues.COLUMN_GROUP_CONTACT, 1);
            ColumnGroupDefinition contactColumnGroup_detail_4_android = createGroup4Android(TableConst.CRM_Customer, locale, ANDROID_COLUMN_GROUP_TYPE_DETAIL, PortletPropsValues.COLUMN_GROUP_CONTACT, 1);
    
            List<ColumnColumnGroupDefinition> baseGroupColumnEdit_android = ColumnColumnGroupDefinitionLocalServiceUtil
                    .searchByColumnGroupDefinitionId(baseColumnGroup_edit_4_android.getColumnGroupDefinitionId());
            
            if (!Validator.isNotNull(baseGroupColumnEdit_android)) {
                String[] baseGroupColumns = ColumnConst.CUSTOMER_BASE_GROUP_COLUMNS_4_ANDOIRD;
                for (int i = 0; i < baseGroupColumns.length; i++) {
                    String columnName = baseGroupColumns[i];
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Customer, columnName);
                    ColumnColumnGroupDefinition columnColumnGroupInDetailPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInDetailPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInDetailPage.setColumnGroupDefinitionId(baseColumnGroup_detail_4_android.getColumnGroupDefinitionId());
                    columnColumnGroupInDetailPage = ColumnColumnGroupDefinitionLocalServiceUtil.addColumnColumnGroupDefinition(columnColumnGroupInDetailPage);
    
                    ColumnColumnGroupDefinition columnColumnGroupInEditPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInEditPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInEditPage.setColumnGroupDefinitionId(baseColumnGroup_edit_4_android.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.addColumnColumnGroupDefinition(columnColumnGroupInEditPage);
                }
                
                String[] contactGroupColumns = ColumnConst.CUSTOMER_CONTACT_GROUP_COLUMNS_4_ANDOIRD;
                for (int i = 0; i < contactGroupColumns.length; i++) {
                    String columnName = contactGroupColumns[i];
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Customer, columnName);
                    ColumnColumnGroupDefinition columnColumnGroupInDetailPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInDetailPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInDetailPage.setColumnGroupDefinitionId(contactColumnGroup_detail_4_android.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.addColumnColumnGroupDefinition(columnColumnGroupInDetailPage);
                    
                    ColumnColumnGroupDefinition columnColumnGroupInEditPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInEditPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInEditPage.setColumnGroupDefinitionId(contactColumnGroup_edit_4_android.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.addColumnColumnGroupDefinition(columnColumnGroupInEditPage);
                }
            }
            
            String[] notDisplayInEditPage = ColumnConst.CUSTOMER_NOT_DISPLAY_IN_EDIT_PAGE;
            for (int i = 0; i < notDisplayInEditPage.length; i++) {
                String columnName = notDisplayInEditPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Customer, columnName);
                columnDefinition.setDisplayInEditPage(false);
                ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition, true);
            }
        }
    
        private void initializingContactColumn(long companyId) throws SystemException, PortalException {
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(TableConst.CRM_Contact);
    
            Company company = CompanyLocalServiceUtil.getCompany(companyId);
            Locale locale = company.getLocale();
    
            String[] dateType = ColumnConst.CONTACT_DATE_TYPE;
            String[] selectType = ColumnConst.CONTACT_SELECT_TYPE;
            String[] textType = ColumnConst.CONTACT_TEXT_TYPE;
            String[] pkType = ColumnConst.CONTACT_PK_TYPE;
            String[] textareaType = ColumnConst.CONTACT_TEXTAREA_TYPE;
    
            for (int i = 0; i < dateType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(dateType[i].substring(dateType[i].length() - 2));
                String columnName = dateType[i].substring(0, dateType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Contact, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("contact." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.date);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                } else {
                    _log.info(TableConst.CRM_Contact + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < selectType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(selectType[i].substring(selectType[i].length() - 2));
                String columnName = selectType[i].substring(0, selectType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Contact, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("contact." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.select);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                } else {
                    _log.info(TableConst.CRM_Contact + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < textType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textType[i]
                        .substring(textType[i].length() - 2));
                String columnName = textType[i].substring(0,
                        textType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Contact, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("contact." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.text);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
    
                    if (columnName.equals("contactName") || columnName.equals("appellation")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition.setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                } else {
                    _log.info(TableConst.CRM_Contact + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < pkType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(pkType[i].substring(pkType[i].length() - 2));
                String columnName = pkType[i].substring(0,pkType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Contact, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("contact." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.pk);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                } else {
                    _log.info(TableConst.CRM_Contact + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < textareaType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textareaType[i].substring(textareaType[i].length() - 2));
                String columnName = textareaType[i].substring(0,textareaType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Contact, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("contact." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.textarea);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                } else {
                    _log.info(TableConst.CRM_Contact + " - " + columnName + " is exists...");
                }
            }
            
            this.initConfigField(tableDefinitionId, TableConst.CRM_Contact);
            ColumnGroupDefinition baseGroupColumn_Edit = createColumnGroup(TableConst.CRM_Contact, locale, PC_COLUMN_GROUP_TYPE_EDIT, PortletPropsValues.COLUMN_GROUP_BASE);
            ColumnGroupDefinition baseGroupColumn_Detail = createColumnGroup(TableConst.CRM_Contact, locale, PC_COLUMN_GROUP_TYPE_DETAIL, PortletPropsValues.COLUMN_GROUP_BASE);
            ColumnGroupDefinition contactGroupColumn_Edit = createColumnGroup(TableConst.CRM_Contact, locale, PC_COLUMN_GROUP_TYPE_EDIT, PortletPropsValues.COLUMN_GROUP_CONTACT);
            ColumnGroupDefinition contactGroupColumn_Detail = createColumnGroup(TableConst.CRM_Contact, locale, PC_COLUMN_GROUP_TYPE_DETAIL, PortletPropsValues.COLUMN_GROUP_CONTACT);
    
            List<ColumnColumnGroupDefinition> columnColumnGroup = ColumnColumnGroupDefinitionLocalServiceUtil
                .searchByColumnGroupDefinitionId(baseGroupColumn_Detail.getColumnGroupDefinitionId());
            if (!Validator.isNotNull(columnColumnGroup)) {
                String[] baseGroupColumns = ColumnConst.CONTACT_BASE_GROUP_COLUMNS;
                for (int i = 0; i < baseGroupColumns.length; i++) {
                    String columnName = baseGroupColumns[i];
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Contact, columnName);
                    long columnDefinitionId = columnDefinition.getColumnDefinitionId();
                    List<ColumnColumnGroupDefinition> columnColumnGroupDefinitions = ColumnColumnGroupDefinitionLocalServiceUtil.searchByColumnDefinitionId(columnDefinitionId);
                    if (!Validator.isNotNull(columnColumnGroupDefinitions)) {
                        ColumnColumnGroupDefinition columnColumnGroupInDetailPage = ColumnColumnGroupDefinitionLocalServiceUtil
                            .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                        columnColumnGroupInDetailPage.setColumnDefinitionId(columnDefinitionId);
                        columnColumnGroupInDetailPage.setColumnGroupDefinitionId(baseGroupColumn_Detail.getColumnGroupDefinitionId());
                        ColumnColumnGroupDefinitionLocalServiceUtil.addColumnColumnGroupDefinition(columnColumnGroupInDetailPage);
                        
                        ColumnColumnGroupDefinition columnColumnGroupInEditPage = ColumnColumnGroupDefinitionLocalServiceUtil
                            .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                        columnColumnGroupInEditPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                        columnColumnGroupInEditPage.setColumnGroupDefinitionId(baseGroupColumn_Edit.getColumnGroupDefinitionId());
                        ColumnColumnGroupDefinitionLocalServiceUtil.addColumnColumnGroupDefinition(columnColumnGroupInEditPage);
                    }
                }
                
                String[] contactGroupColumns = ColumnConst.CONTACT_CONTACT_GROUP_COLUMNS;
                for (int i = 0; i < contactGroupColumns.length; i++) {
                    String columnName = contactGroupColumns[i];
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Contact, columnName);
                    long columnDefinitionId = columnDefinition.getColumnDefinitionId();
                    List<ColumnColumnGroupDefinition> columnColumnGroupDefinitions = ColumnColumnGroupDefinitionLocalServiceUtil.searchByColumnDefinitionId(columnDefinitionId);
                    if (!Validator.isNotNull(columnColumnGroupDefinitions)) {
                        ColumnColumnGroupDefinition columnColumnGroupInDetailPage = ColumnColumnGroupDefinitionLocalServiceUtil
                            .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                        columnColumnGroupInDetailPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                        columnColumnGroupInDetailPage.setColumnGroupDefinitionId(contactGroupColumn_Detail.getColumnGroupDefinitionId());
                        ColumnColumnGroupDefinitionLocalServiceUtil.addColumnColumnGroupDefinition(columnColumnGroupInDetailPage);
    
                        ColumnColumnGroupDefinition columnColumnGroupInEditPage = ColumnColumnGroupDefinitionLocalServiceUtil
                            .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                        columnColumnGroupInEditPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                        columnColumnGroupInEditPage.setColumnGroupDefinitionId(contactGroupColumn_Edit.getColumnGroupDefinitionId());
                        ColumnColumnGroupDefinitionLocalServiceUtil.addColumnColumnGroupDefinition(columnColumnGroupInEditPage);
                    }
                }
            }
    
            ColumnGroupDefinition baseColumnGroup_edit_4_android = createGroup4Android(TableConst.CRM_Contact, locale, ANDROID_COLUMN_GROUP_TYPE_EDIT, PortletPropsValues.COLUMN_GROUP_BASE ,0 );
            ColumnGroupDefinition baseColumnGroup_detail_4_android = createGroup4Android(TableConst.CRM_Contact, locale, ANDROID_COLUMN_GROUP_TYPE_DETAIL, PortletPropsValues.COLUMN_GROUP_BASE, 0);
            ColumnGroupDefinition contactColumnGroup_edit_4_android = createGroup4Android(TableConst.CRM_Contact, locale, ANDROID_COLUMN_GROUP_TYPE_EDIT, PortletPropsValues.COLUMN_GROUP_CONTACT, 1);
            ColumnGroupDefinition contactColumnGroup_detail_4_android = createGroup4Android(TableConst.CRM_Contact, locale, ANDROID_COLUMN_GROUP_TYPE_DETAIL, PortletPropsValues.COLUMN_GROUP_CONTACT, 1);
    
            List<ColumnColumnGroupDefinition> baseGroupColumnEdit_android = ColumnColumnGroupDefinitionLocalServiceUtil
                    .searchByColumnGroupDefinitionId(baseColumnGroup_edit_4_android.getColumnGroupDefinitionId());
            if (!Validator.isNotNull(baseGroupColumnEdit_android)) {
                String[] baseGroupColumns = ColumnConst.CONTACT_BASE_GROUP_COLUMNS_4_ANDROID;
                for (int i = 0; i < baseGroupColumns.length; i++) {
                    String columnName = baseGroupColumns[i];
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Contact, columnName);
                    ColumnColumnGroupDefinition columnColumnGroupInDetailPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInDetailPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInDetailPage.setColumnGroupDefinitionId(baseColumnGroup_detail_4_android.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.addColumnColumnGroupDefinition(columnColumnGroupInDetailPage);
    
                    ColumnColumnGroupDefinition columnColumnGroupInEditPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInEditPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInEditPage.setColumnGroupDefinitionId(baseColumnGroup_edit_4_android.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.addColumnColumnGroupDefinition(columnColumnGroupInEditPage);
                }
                
                String[] contactGroupColumns = ColumnConst.CONTACT_GROUP_COLUMNS_4_ANDROID;
                for (int i = 0; i < contactGroupColumns.length; i++) {
                    String columnName = contactGroupColumns[i];
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Contact, columnName);
                    ColumnColumnGroupDefinition columnColumnGroupInDetailPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInDetailPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInDetailPage.setColumnGroupDefinitionId(contactColumnGroup_detail_4_android.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.addColumnColumnGroupDefinition(columnColumnGroupInDetailPage);
                    
                    ColumnColumnGroupDefinition columnColumnGroupInEditPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInEditPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInEditPage.setColumnGroupDefinitionId(contactColumnGroup_edit_4_android.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.addColumnColumnGroupDefinition(columnColumnGroupInEditPage);
                }
            }
            
            String[] notDisplayInEditPage = ColumnConst.CONTACT_NOT_DISPLAY_IN_EDIT_PAGE;
            for (int i = 0; i < notDisplayInEditPage.length; i++) {
                String columnName = notDisplayInEditPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Contact, columnName);
                columnDefinition.setDisplayInEditPage(false);
                ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition, true);
            }
            
            String[] notDisplayInDetailPage = ColumnConst.CONTACT_NOT_USE_DISPLAY_IN_DETAIL_PAGE;
            for (int i = 0; i < notDisplayInDetailPage.length; i++) {
                String columnName = notDisplayInDetailPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Contact, columnName);
                long columnId = columnDefinition.getColumnDefinitionId();
                List<ColumnColumnGroupDefinition> cccgds = ColumnColumnGroupDefinitionLocalServiceUtil.searchByColumnDefinitionId(columnId);
                if (Validator.isNotNull(cccgds)) {
                    for (ColumnColumnGroupDefinition cccgd : cccgds) {
                        long columnGroupId = cccgd.getColumnGroupDefinitionId();
                        ColumnGroupDefinition columnGroup = ColumnGroupDefinitionLocalServiceUtil
                        .getColumnGroupDefinition(columnGroupId);
                        if (columnGroup.getGroupType() == 0) {
                            ColumnColumnGroupDefinitionLocalServiceUtil
                            .deleteColumnColumnGroupDefinition(cccgd);
                        }
                    }
                }
            }
        }
    
        private void initializingMarketColumn(long companyId) throws SystemException, PortalException {
    
            Company company = CompanyLocalServiceUtil.getCompany(companyId);
            Locale locale = company.getLocale();
    
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(TableConst.CRM_Market);
            String groupDisplayName = LanguageUtil.get(PortletIDs.INITIALIZATION, locale, PortletPropsValues.COLUMN_GROUP_BASE);
            
            ColumnGroupDefinition columnDetailGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(groupDisplayName, tableDefinitionId, 0);
            ColumnGroupDefinition columnGroupInDetailPage = columnDetailGroup;
            if (columnDetailGroup == null){
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil.createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInDetailPage.setDisplayIndex(0);
                columnGroupInDetailPage.setIsDisplay(DISPALY_1);
                columnGroupInDetailPage.setGroupDisplayName(groupDisplayName);
                columnGroupInDetailPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInDetailPage.setGroupType(PC_COLUMN_GROUP_TYPE_DETAIL);
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil.updateColumnGroupDefinition(columnGroupInDetailPage);
            }
            
            ColumnGroupDefinition columnEditGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(groupDisplayName, tableDefinitionId, 1);
            ColumnGroupDefinition columnGroupInEditPage = columnEditGroup;
            if (columnEditGroup == null){
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil.createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInEditPage.setDisplayIndex(0);
                columnGroupInEditPage.setIsDisplay(DISPALY_1);
                columnGroupInEditPage.setGroupDisplayName(groupDisplayName);
                columnGroupInEditPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInEditPage.setGroupType(PC_COLUMN_GROUP_TYPE_EDIT);
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil.updateColumnGroupDefinition(columnGroupInEditPage);
            }
    
            String[] dateType = ColumnConst.MARKET_DATE_TYPE;
            String[] selectType = ColumnConst.MARKET_SELECT_TYPE;
            String[] textType = ColumnConst.MARKET_TEXT_TYPE;
            String[] floatType = ColumnConst.MARKET_FLOAT_TYPE;
            String[] textareaType = ColumnConst.MARKET_TEXTAREA_TYPE;
            String[] pkType = ColumnConst.MARKET_PK_TYPE;
            String[] integerType = ColumnConst.MARKET_INTEGER_TYPE;
            
            for (int i = 0; i < dateType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(dateType[i].substring(dateType[i].length() - 2));
                String columnName = dateType[i].substring(0, dateType[i].length() - 2);
                
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Market, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("market."+columnName);
                    columnDefinition.setDefaultFormType(FormConst.date);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
        
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Market + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < selectType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(selectType[i].substring(selectType[i].length() - 2));
                String columnName = selectType[i].substring(0, selectType[i].length() - 2);
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Market, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("market."+columnName);
                    columnDefinition.setDefaultFormType(FormConst.select);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    if (columnName.equals("channel")
                            || columnName.equals("priority")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition
                                .setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
        
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
        
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(), columnGroupInEditPage.getColumnGroupDefinitionId(),columnGroupInDetailPage.getColumnGroupDefinitionId());
        
                } else {
                    _log.info(TableConst.CRM_Market + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < textType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textType[i].substring(textType[i].length() - 2));
                String columnName = textType[i].substring(0, textType[i].length() - 2);
                
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Market, columnName);
                if (entity == null) {
        
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("market."+columnName);
                    columnDefinition.setDefaultFormType(FormConst.text);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    if (columnName.equals("name") || columnName.equals("code")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition.setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
        
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(), columnGroupInEditPage.getColumnGroupDefinitionId(),columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Market + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < integerType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(integerType[i].substring(integerType[i].length() - 2));
                String columnName = integerType[i].substring(0, integerType[i].length() - 2);
                
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Market, columnName);
                if (entity == null) {
                    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("market."+columnName);
                    columnDefinition.setDefaultFormType(FormConst.text);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    if (columnName.equals("name") || columnName.equals("code")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition.setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(), columnGroupInEditPage.getColumnGroupDefinitionId(),columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Market + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < textareaType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textareaType[i].substring(textareaType[i].length() - 2));
                String columnName = textareaType[i].substring(0, textareaType[i].length() - 2);
                
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Market, columnName);
                if (entity == null) {
    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("market."+columnName);
                    columnDefinition.setDefaultFormType(FormConst.textarea);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Market + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < floatType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(floatType[i].substring(floatType[i].length() - 2));
                String columnName = floatType[i].substring(0, floatType[i].length() - 2);
                
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Market, columnName);
                if (entity == null) {
        
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("market."+columnName);
                    columnDefinition.setDefaultFormType(FormConst.float_);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    if (columnName.equals("planFees")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_FLOAT);
                        columnDefinition.setVerifyTips(PortletPropsValues.VERIFY_DIGIT_TIPS);
                    }
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
        
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Market + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < pkType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(pkType[i].substring(pkType[i].length() - 2));
                String columnName = pkType[i].substring(0, pkType[i].length() - 2);
                
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Market, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("market."+columnName);
                    columnDefinition.setDefaultFormType(FormConst.pk);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Market + " - " + columnName + " is exists...");
                }
            }
            
            this.initConfigField(tableDefinitionId,TableConst.CRM_Market);
    
            String[] notDisplayInEditPage = ColumnConst.MARKET_NOT_DISPLAY_IN_EDIT_PAGE;
            String[] notUseInDetailPage = ColumnConst.MARKET_NOT_USE_IN_DETAIL_PAGE;
    
            for (int i = 0; i < notDisplayInEditPage.length; i++) {
                String columnName = notDisplayInEditPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                    .searchByColumnName(TableConst.CRM_Market, columnName);
                columnDefinition.setDisplayInEditPage(false);
                ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition, true);
            }
            for (int i = 0; i < notUseInDetailPage.length; i++) {
                String columnName = notUseInDetailPage[i];
                
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Market, columnName);
                long columnId = columnDefinition.getColumnDefinitionId();
                List<ColumnColumnGroupDefinition> cccgds = ColumnColumnGroupDefinitionLocalServiceUtil.searchByColumnDefinitionId(columnId);
                if (Validator.isNotNull(cccgds)) {
                    for (ColumnColumnGroupDefinition cccgd : cccgds) {
                        long columnGroupId = cccgd.getColumnGroupDefinitionId();
                        ColumnGroupDefinition columnGroup = ColumnGroupDefinitionLocalServiceUtil
                                .getColumnGroupDefinition(columnGroupId);
                        if (columnGroup.getGroupType() == 0) {
                            ColumnColumnGroupDefinitionLocalServiceUtil
                                    .deleteColumnColumnGroupDefinition(cccgd);
                        }
                    }
                }
            }
        }
    
        private void initializingClueColumn(long companyId) throws SystemException,
                PortalException {
    
            Company company = CompanyLocalServiceUtil.getCompany(companyId);
            Locale locale = company.getLocale();
    
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(TableConst.CRM_Clue);
    
            String groupDisplayName = LanguageUtil.get(PortletIDs.INITIALIZATION, locale, PortletPropsValues.COLUMN_GROUP_BASE);
    
            ColumnGroupDefinition columnDetailGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(groupDisplayName, tableDefinitionId, 0);
            ColumnGroupDefinition columnGroupInDetailPage = columnDetailGroup;
            if (columnDetailGroup == null) {
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil
                    .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInDetailPage.setDisplayIndex(0);
                columnGroupInDetailPage.setIsDisplay(DISPALY_1);
                columnGroupInDetailPage.setGroupDisplayName(groupDisplayName);
                columnGroupInDetailPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInDetailPage.setGroupType(PC_COLUMN_GROUP_TYPE_DETAIL);
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil
                        .updateColumnGroupDefinition(columnGroupInDetailPage);
            }
    
            ColumnGroupDefinition columnEditGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(groupDisplayName, tableDefinitionId, 1);
            ColumnGroupDefinition columnGroupInEditPage = columnEditGroup;
            if (columnEditGroup == null) {
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil
                        .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInEditPage.setDisplayIndex(0);
                columnGroupInEditPage.setIsDisplay(DISPALY_1);
                columnGroupInEditPage.setGroupDisplayName(groupDisplayName);
                columnGroupInEditPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInEditPage.setGroupType(PC_COLUMN_GROUP_TYPE_EDIT);
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil
                        .updateColumnGroupDefinition(columnGroupInEditPage);
            }
            
            String[] dateType = ColumnConst.CLUE_DATE_TYPE;
            String[] selectType = ColumnConst.CLUE_SELECT_TYPE;
            String[] textType = ColumnConst.CLUE_TEXT_TYPE;
            String[] textareaType = ColumnConst.CLUE_TEXTAREA_TYPE;
            String[] pkType = ColumnConst.CLUE_PK_TYPE;
            String[] floatType = ColumnConst.CLUE_FLOAT_TYPE;
    
            for (int i = 0; i < dateType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(dateType[i].substring(dateType[i].length() - 2));
                String columnName = dateType[i].substring(0,dateType[i].length() - 2);
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Clue, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("clue." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.date);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                    
                } else {
                    _log.info(TableConst.CRM_Clue + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < selectType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(selectType[i].substring(selectType[i].length() - 2));
                String columnName = selectType[i].substring(0, selectType[i].length() - 2);
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Clue, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("clue." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.select);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
        
                    if (columnName.equals("type")
                            || columnName.equals("industryId")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition
                                .setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
        
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Clue + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < textType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textType[i].substring(textType[i].length() - 2));
                String columnName = textType[i].substring(0,textType[i].length() - 2);
    
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Clue, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("clue." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.text);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    if (columnName.equals("mobile")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_MOBILE);
                        columnDefinition
                                .setVerifyTips(PortletPropsValues.VERIFY_MOBLIE_TIPS);
                    }
    
                    if (columnName.equals("code") || columnName.equals("name")
                            || columnName.equals("customerName")
                            || columnName.equals("contactName")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition
                                .setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Clue + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < textareaType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textareaType[i].substring(textareaType[i].length() - 2));
                String columnName = textareaType[i].substring(0, textareaType[i].length() - 2);
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Clue, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("clue." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.textarea);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
        
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Clue + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < pkType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(pkType[i].substring(pkType[i].length() - 2));
                String columnName = pkType[i].substring(0, pkType[i].length() - 2);
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Clue, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("clue." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.pk);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Clue + " - " + columnName + " is exists...");
                }
            }
            
            
            for (int i = 0; i < floatType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(floatType[i].substring(floatType[i].length() - 2));
                String columnName = floatType[i].substring(0,floatType[i].length() - 2);
                
                
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Clue, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                    .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("clue." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.integer_);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Clue + " - " + columnName + " is exists...");
                }
            }
    
            this.initConfigField(tableDefinitionId,TableConst.CRM_Clue);
            
            String[] notDisplayInEditPage=ColumnConst.CLUE_NOT_DISPLAY_IN_EDIT_PAGE;
    
            for (int i = 0; i < notDisplayInEditPage.length; i++) {
                String columnName = notDisplayInEditPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .searchByColumnName(TableConst.CRM_Clue, columnName);
                columnDefinition.setDisplayInEditPage(false); 
                ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition, true);
            }
            
            String[] notUseDisplayInDetailPage = ColumnConst.CLUE_NOT_USE_DISPLAY_IN_DETAIL_PAGE;
            for (int i = 0; i < notUseDisplayInDetailPage.length; i++) {
                String columnName = notUseDisplayInDetailPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                    .searchByColumnName(TableConst.CRM_Clue, columnName);
                long columnId = columnDefinition.getColumnDefinitionId();
                List<ColumnColumnGroupDefinition> cccgds = ColumnColumnGroupDefinitionLocalServiceUtil.searchByColumnDefinitionId(columnId);
                if (Validator.isNotNull(cccgds)) {
                    for (ColumnColumnGroupDefinition cccgd : cccgds) {
                        long columnGroupId = cccgd.getColumnGroupDefinitionId();
                        ColumnGroupDefinition columnGroup = ColumnGroupDefinitionLocalServiceUtil
                                .getColumnGroupDefinition(columnGroupId);
                        if (columnGroup.getGroupType() == 0) {
                            ColumnColumnGroupDefinitionLocalServiceUtil
                                    .deleteColumnColumnGroupDefinition(cccgd);
                        }
                    }
                }
            }
            
            ColumnGroupDefinition baseColumnGroup_edit_4_android = createGroup4Android(TableConst.CRM_Clue, locale, ANDROID_COLUMN_GROUP_TYPE_EDIT, PortletPropsValues.COLUMN_GROUP_BASE, 0);
            ColumnGroupDefinition baseColumnGroup_detail_4_android = createGroup4Android(TableConst.CRM_Clue, locale, ANDROID_COLUMN_GROUP_TYPE_DETAIL, PortletPropsValues.COLUMN_GROUP_BASE, 0);
            ColumnGroupDefinition contactColumnGroup_edit_4_android = createGroup4Android(TableConst.CRM_Clue, locale, ANDROID_COLUMN_GROUP_TYPE_EDIT, PortletPropsValues.COLUMN_GROUP_CONTACT, 1);
            ColumnGroupDefinition contactColumnGroup_detail_4_android = createGroup4Android(TableConst.CRM_Clue, locale, ANDROID_COLUMN_GROUP_TYPE_DETAIL, PortletPropsValues.COLUMN_GROUP_CONTACT, 1);
    
            List<ColumnColumnGroupDefinition> baseGroupColumnEdit_android = ColumnColumnGroupDefinitionLocalServiceUtil
                    .searchByColumnGroupDefinitionId(baseColumnGroup_edit_4_android.getColumnGroupDefinitionId());
            
            if (!Validator.isNotNull(baseGroupColumnEdit_android)) {
                String[] baseGroupColumns = ColumnConst.CLUE_BASE_GROUP_COLUMNS_4_ANDOIRD;
                for (int i = 0; i < baseGroupColumns.length; i++) {
                    String columnName = baseGroupColumns[i];
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Clue, columnName);
                    ColumnColumnGroupDefinition columnColumnGroupInDetailPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInDetailPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInDetailPage.setColumnGroupDefinitionId(baseColumnGroup_detail_4_android.getColumnGroupDefinitionId());
                    columnColumnGroupInDetailPage = ColumnColumnGroupDefinitionLocalServiceUtil.addColumnColumnGroupDefinition(columnColumnGroupInDetailPage);
    
                    ColumnColumnGroupDefinition columnColumnGroupInEditPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInEditPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInEditPage.setColumnGroupDefinitionId(baseColumnGroup_edit_4_android.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.addColumnColumnGroupDefinition(columnColumnGroupInEditPage);
                }
    
                String[] contactGroupColumns = ColumnConst.CLUE_CONTACT_GROUP_COLUMNS_4_ANDOIRD;
                for (int i = 0; i < contactGroupColumns.length; i++) {
                    String columnName = contactGroupColumns[i];
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Clue, columnName);
                    ColumnColumnGroupDefinition columnColumnGroupInDetailPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInDetailPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInDetailPage.setColumnGroupDefinitionId(contactColumnGroup_detail_4_android.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.addColumnColumnGroupDefinition(columnColumnGroupInDetailPage);
                    
                    ColumnColumnGroupDefinition columnColumnGroupInEditPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInEditPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInEditPage.setColumnGroupDefinitionId(contactColumnGroup_edit_4_android.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.addColumnColumnGroupDefinition(columnColumnGroupInEditPage);
                }
            }
            
            this.doContactInfoGroup4Clue(locale, tableDefinitionId);
        }
    
        private void initializingOpportuntiyColumn(long companyId) throws SystemException, PortalException {
    
            Company company = CompanyLocalServiceUtil.getCompany(companyId);
            Locale locale = company.getLocale();
    
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(TableConst.CRM_Opportunity);
    
            String groupDisplayName = LanguageUtil.get(PortletIDs.INITIALIZATION,
                    locale, PortletPropsValues.COLUMN_GROUP_BASE);
            ColumnGroupDefinition columnDetailGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(groupDisplayName, tableDefinitionId, 0);
            ColumnGroupDefinition columnGroupInDetailPage = columnDetailGroup;
            if (columnDetailGroup == null){
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil 
                        .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInDetailPage.setDisplayIndex(0);
                columnGroupInDetailPage.setIsDisplay(DISPALY_1);
                columnGroupInDetailPage.setGroupDisplayName(groupDisplayName);
                columnGroupInDetailPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInDetailPage.setGroupType(PC_COLUMN_GROUP_TYPE_DETAIL);
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil.updateColumnGroupDefinition(columnGroupInDetailPage);
            }
    
            ColumnGroupDefinition columnEditGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(groupDisplayName, tableDefinitionId, 1);
            ColumnGroupDefinition columnGroupInEditPage = columnEditGroup;
            if (columnEditGroup == null){
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil
                        .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInEditPage.setDisplayIndex(0);
                columnGroupInEditPage.setIsDisplay(DISPALY_1);
                columnGroupInEditPage.setGroupDisplayName(groupDisplayName);
                columnGroupInEditPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInEditPage.setGroupType(PC_COLUMN_GROUP_TYPE_EDIT);
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil.updateColumnGroupDefinition(columnGroupInEditPage);
            }
    
            String[] dateType = ColumnConst.OPPORTUNITY_DATE_TYPE;
            String[] selectType = ColumnConst.OPPORTUNITY_SELECT_TYPE;
            String[] textType = ColumnConst.OPPORTUNITY_TEXT_TYPE;
            String[] textareaType = ColumnConst.OPPORTUNITY_TEXTAREA_TYPE;
            String[] floatType = ColumnConst.OPPORTUNITY_FLOAT_TYPE;
            String[] pkType = ColumnConst.OPPORTUNITY_PK_TYPE;
    
            for (int i = 0; i < dateType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(dateType[i].substring(dateType[i].length() - 2));
                String columnName = dateType[i].substring(0,dateType[i].length() - 2);
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Opportunity, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("opportunity." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.date);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Opportunity + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < selectType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(selectType[i].substring(selectType[i].length() - 2));
                String columnName = selectType[i].substring(0, selectType[i].length() - 2);
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Opportunity, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("opportunity." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.select);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
        
                    if (columnName.equals("source")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition
                                .setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
        
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
        
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Opportunity + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < textType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textType[i].substring(textType[i].length() - 2));
                String columnName = textType[i].substring(0,textType[i].length() - 2);
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Opportunity, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("opportunity." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.text);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
    
                    if (columnName.equals("code") || columnName.equals("topic")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition.setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
        
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Opportunity + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < textareaType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textareaType[i].substring(textareaType[i].length() - 2));
                String columnName = textareaType[i].substring(0, textareaType[i].length() - 2);
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Opportunity, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("opportunity." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.textarea);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    if (columnName.equals("code") || columnName.equals("topic")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition
                                .setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
        
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Opportunity + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < floatType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(floatType[i].substring(floatType[i].length() - 2));
                String columnName = floatType[i].substring(0,floatType[i].length() - 2);
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Opportunity, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("opportunity." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.float_);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
        
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Opportunity + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < pkType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(pkType[i].substring(pkType[i].length() - 2));
                String columnName = pkType[i].substring(0, pkType[i].length() - 2);
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Opportunity, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("opportunity." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.pk);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Opportunity + " - " + columnName + " is exists...");
                }
            }
    
            this.initConfigField(tableDefinitionId, TableConst.CRM_Opportunity);
    
            ColumnGroupDefinition columnGroup_edit_4_android = createGroup4Android(TableConst.CRM_Opportunity, locale, ANDROID_COLUMN_GROUP_TYPE_EDIT, PortletPropsValues.COLUMN_GROUP_BASE, 0);
            ColumnGroupDefinition columnGroup_detail_4_android = createGroup4Android(TableConst.CRM_Opportunity, locale, ANDROID_COLUMN_GROUP_TYPE_DETAIL, PortletPropsValues.COLUMN_GROUP_BASE, 0);
    
            List<ColumnColumnGroupDefinition> baseGroupColumnEdit_android = ColumnColumnGroupDefinitionLocalServiceUtil
                    .searchByColumnGroupDefinitionId(columnGroup_edit_4_android.getColumnGroupDefinitionId());
            if (!Validator.isNotNull(baseGroupColumnEdit_android)) {
                String[] baseGroupColumns = ColumnConst.OPPORTUNITY_GROUP_COLUMNS_4_ANDROID;
                for (int i = 0; i < baseGroupColumns.length; i++) {
                    String columnName = baseGroupColumns[i];
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Opportunity, columnName);
                    ColumnColumnGroupDefinition columnColumnGroupInDetailPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInDetailPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInDetailPage.setColumnGroupDefinitionId(columnGroup_detail_4_android.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.updateColumnColumnGroupDefinition(columnColumnGroupInDetailPage);
    
                    ColumnColumnGroupDefinition columnColumnGroupInEditPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInEditPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInEditPage.setColumnGroupDefinitionId(columnGroup_edit_4_android.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.updateColumnColumnGroupDefinition(columnColumnGroupInEditPage);
                }
            }
    
            String[] notUseInEditPage = ColumnConst.OPPORTUNITY_NOT_DISPLAY_IN_EDIT_PAGE;
    
            for (int i = 0; i < notUseInEditPage.length; i++) {
                String columnName = notUseInEditPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .searchByColumnName(TableConst.CRM_Opportunity, columnName);
                columnDefinition.setDisplayInEditPage(false);
                ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition, true);
            }
    
            String[] notDisplayInDetail = ColumnConst.OPPORTUNITY_NOT_USE_IN_DETAIL_PAGE;
            
            for (int i = 0; i < notDisplayInDetail.length; i++) {
                String columnName = notDisplayInDetail[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                    .searchByColumnName(TableConst.CRM_Opportunity, columnName);
                long columnId = columnDefinition.getColumnDefinitionId();
                List<ColumnColumnGroupDefinition> cccgds = ColumnColumnGroupDefinitionLocalServiceUtil.searchByColumnDefinitionId(columnId);
                if (Validator.isNotNull(cccgds)) {
                    for (ColumnColumnGroupDefinition cccgd : cccgds) {
                        long columnGroupId = cccgd.getColumnGroupDefinitionId();
                        ColumnGroupDefinition columnGroup = ColumnGroupDefinitionLocalServiceUtil
                                .getColumnGroupDefinition(columnGroupId);
                        if (columnGroup.getGroupType() == 0) {
                            ColumnColumnGroupDefinitionLocalServiceUtil.deleteColumnColumnGroupDefinition(cccgd);
                        }
                    }
                }
            }
        }
    
        private void initializingQuotationColumn(long companyId)
                throws SystemException, PortalException {
    
            Company company = CompanyLocalServiceUtil.getCompany(companyId);
            Locale locale = company.getLocale();
    
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(TableConst.CRM_Quotation);
    
            String groupDisplayName = LanguageUtil.get(PortletIDs.INITIALIZATION,
                    locale, PortletPropsValues.COLUMN_GROUP_BASE);
            ColumnGroupDefinition columnDetailGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(groupDisplayName, tableDefinitionId, 0);
            ColumnGroupDefinition columnGroupInDetailPage = columnDetailGroup;
            if (columnDetailGroup == null){
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil
                .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInDetailPage.setDisplayIndex(0);
                columnGroupInDetailPage.setIsDisplay(DISPALY_1);
                columnGroupInDetailPage.setGroupDisplayName(groupDisplayName);
                columnGroupInDetailPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInDetailPage.setGroupType(PC_COLUMN_GROUP_TYPE_DETAIL);
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil
                .updateColumnGroupDefinition(columnGroupInDetailPage);
            }
    
            ColumnGroupDefinition columnEditGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(groupDisplayName, tableDefinitionId, 1);
            ColumnGroupDefinition columnGroupInEditPage = columnEditGroup;
            if (columnEditGroup == null){
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil
                        .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInEditPage.setDisplayIndex(0);
                columnGroupInEditPage.setIsDisplay(DISPALY_1);
                columnGroupInEditPage.setGroupDisplayName(groupDisplayName);
                columnGroupInEditPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInEditPage.setGroupType(PC_COLUMN_GROUP_TYPE_EDIT);
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil
                        .updateColumnGroupDefinition(columnGroupInEditPage);
            }
            
            String[] dateType = ColumnConst.QUOTATION_DATE_TYPE;
            String[] textType = ColumnConst.QUOTATION_TEXT_TYPE;
            String[] textareaType = ColumnConst.QUOTATION_TEXTAREA_TYPE;
            String[] floatType = ColumnConst.QUOTATION_FLOAT_TYPE;
            String[] pkType = ColumnConst.QUOTATION_PK_TYPE;
    
            for (int i = 0; i < dateType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(dateType[i].substring(dateType[i].length() - 2));
                String columnName = dateType[i].substring(0,dateType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Quotation, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                    .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("quotation." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.date);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Quotation + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < textType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textType[i].substring(textType[i].length() - 2));
                String columnName = textType[i].substring(0,textType[i].length() - 2);
                
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Quotation, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("quotation." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.text);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    if (columnName.equals("code") || columnName.equals("name")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition
                                .setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
    
                    if (columnName.equals("phone")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition
                                .setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
        
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
        
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Quotation + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < textareaType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textareaType[i]
                        .substring(textareaType[i].length() - 2));
                String columnName = textareaType[i].substring(0, textareaType[i]
                        .length() - 2);
                
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Quotation, columnName);
                if (entity == null) {
        
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("quotation." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.textarea);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Quotation + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < pkType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(pkType[i].substring(pkType[i].length() - 2));
                String columnName = pkType[i].substring(0, pkType[i].length() - 2);
                
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Quotation, columnName);
                if (entity == null) {
        
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("quotation." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.pk);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    if (columnName.equals("customerId")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition
                                .setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
        
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Quotation + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < floatType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(floatType[i]
                        .substring(floatType[i].length() - 2));
                String columnName = floatType[i].substring(0,
                        floatType[i].length() - 2);
                
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Quotation, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("quotation." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.float_);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
        
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Quotation + " - " + columnName + " is exists...");
                }
            }
    
            this.initConfigField(tableDefinitionId,TableConst.CRM_Quotation);
            
            String[] notDisplayInEditPage = ColumnConst.QUOTATION_NOT_DISPLAY_IN_EDIT_PAGE;
    
            for (int i = 0; i < notDisplayInEditPage.length; i++) {
                String columnName = notDisplayInEditPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .searchByColumnName(TableConst.CRM_Quotation, columnName);
                columnDefinition.setDisplayInEditPage(false);
                ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition, true);
            }
    
            String[] notDisplayInDetail = ColumnConst.QUOTATION_NOT_USE_IN_DETAIL_PAGE;
            
            for (int i = 0; i < notDisplayInDetail.length; i++) {
                String columnName = notDisplayInDetail[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                    .searchByColumnName(TableConst.CRM_Quotation, columnName);
    
                long columnId = columnDefinition.getColumnDefinitionId();
                List<ColumnColumnGroupDefinition> cccgds = ColumnColumnGroupDefinitionLocalServiceUtil.searchByColumnDefinitionId(columnId);
                if (Validator.isNotNull(cccgds)) {
                    for (ColumnColumnGroupDefinition cccgd : cccgds) {
                        long columnGroupId = cccgd.getColumnGroupDefinitionId();
                        ColumnGroupDefinition columnGroup = ColumnGroupDefinitionLocalServiceUtil
                                .getColumnGroupDefinition(columnGroupId);
                        if (columnGroup.getGroupType() == 0) {
                            ColumnColumnGroupDefinitionLocalServiceUtil
                                    .deleteColumnColumnGroupDefinition(cccgd);
                        }
                    }
                }
            }
        }
        
        private void initializingOrderColumn(long companyId) throws SystemException, PortalException {
    
            Company company = CompanyLocalServiceUtil.getCompany(companyId);
            Locale locale = company.getLocale();
    
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(TableConst.CRM_Order);
            
            String groupDisplayName = LanguageUtil.get(PortletIDs.INITIALIZATION,
                    locale, PortletPropsValues.COLUMN_GROUP_BASE);
            ColumnGroupDefinition columnDetailGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(groupDisplayName, tableDefinitionId, 0);
            ColumnGroupDefinition columnGroupInDetailPage = columnDetailGroup;
            if (columnDetailGroup == null){
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil
                .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInDetailPage.setDisplayIndex(0);
                columnGroupInDetailPage.setIsDisplay(DISPALY_1);
                columnGroupInDetailPage.setGroupDisplayName(groupDisplayName);
                columnGroupInDetailPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInDetailPage.setGroupType(PC_COLUMN_GROUP_TYPE_DETAIL);
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil
                    .updateColumnGroupDefinition(columnGroupInDetailPage);
            }
    
            ColumnGroupDefinition columnEditGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(groupDisplayName, tableDefinitionId, 1);
            ColumnGroupDefinition columnGroupInEditPage = columnEditGroup;
            if (columnEditGroup == null){
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil
                        .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInEditPage.setDisplayIndex(0);
                columnGroupInEditPage.setIsDisplay(DISPALY_1);
                columnGroupInEditPage.setGroupDisplayName(groupDisplayName);
                columnGroupInEditPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInEditPage.setGroupType(PC_COLUMN_GROUP_TYPE_EDIT);
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil
                        .updateColumnGroupDefinition(columnGroupInEditPage);
            }
    
            
            
            String[] textType = ColumnConst.ORDER_TEXT_TYPE;
            String[] dateType = ColumnConst.ORDER_DATE_TYPE;
            String[] textareaType = ColumnConst.ORDER_TEXTAREA_TYPE;
            String[] floatType = ColumnConst.ORDER_FLOAT_TYPE;
            String[] pkType = ColumnConst.ORDER_PK_TYPE;
            
            for (int i = 0; i < dateType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(dateType[i].substring(dateType[i].length() - 2));
                String columnName = dateType[i].substring(0,dateType[i].length() - 2);
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Order, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("order." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.date);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
        
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Order + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < textType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textType[i].substring(textType[i].length() - 2));
                String columnName = textType[i].substring(0,textType[i].length() - 2);
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Order, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("order." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.text);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    if (columnName.equals("code") || columnName.equals("name")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition.setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Order + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < textareaType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textareaType[i].substring(textareaType[i].length() - 2));
                String columnName = textareaType[i].substring(0, textareaType[i].length() - 2);
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Order, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("order." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.textarea);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
        
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Order + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < pkType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(pkType[i].substring(pkType[i].length() - 2));
                String columnName = pkType[i].substring(0, pkType[i].length() - 2);
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Order, columnName);
                if (entity == null) {
        
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("order." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.pk);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
    
                    if (columnName.equals("customerId")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition.setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Order + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < floatType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(floatType[i].substring(floatType[i].length() - 2));
                String columnName = floatType[i].substring(0,
                        floatType[i].length() - 2);
                
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Order, columnName);
                if (entity == null) {
                    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                    .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("order." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.float_);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                        .updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Order + " - " + columnName + " is exists...");
                }
            }
    
            this.initConfigField(tableDefinitionId,TableConst.CRM_Order);
    
            String[] notDisplayInEditPage = ColumnConst.ORDER_NOT_DISPLAY_IN_EDIT_PAGE;
    
            for (int i = 0; i < notDisplayInEditPage.length; i++) {
                String columnName = notDisplayInEditPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .searchByColumnName(TableConst.CRM_Order, columnName);
                columnDefinition.setDisplayInEditPage(false);
                ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition, true);
            }
    
            String[] notDisplayInDetail = ColumnConst.ORDER_NOT_USE_IN_DETAIL_PAGE;
            
            for (int i = 0; i < notDisplayInDetail.length; i++) {
                String columnName = notDisplayInDetail[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .searchByColumnName(TableConst.CRM_Order, columnName);
                long columnId = columnDefinition.getColumnDefinitionId();
                List<ColumnColumnGroupDefinition> cccgds = ColumnColumnGroupDefinitionLocalServiceUtil.searchByColumnDefinitionId(columnId);
                if (Validator.isNotNull(cccgds)) {
                    for (ColumnColumnGroupDefinition cccgd : cccgds) {
                        long columnGroupId = cccgd.getColumnGroupDefinitionId();
                        ColumnGroupDefinition columnGroup = ColumnGroupDefinitionLocalServiceUtil
                                .getColumnGroupDefinition(columnGroupId);
                        if (columnGroup.getGroupType() == 0) {
                            ColumnColumnGroupDefinitionLocalServiceUtil
                                    .deleteColumnColumnGroupDefinition(cccgd);
                        }
                    }
                }
            }
        }
    
        private void initializingActivityColumn(long companyId)
                throws SystemException, PortalException {
    
            long tableDefinitionId = TableDefinitionLocalServiceUtil
                    .searchByTableName(TableConst.CRM_Activity);
            Company company = CompanyLocalServiceUtil.getCompany(companyId);
            Locale locale = company.getLocale();
            String groupDisplayName = LanguageUtil.get(PortletIDs.INITIALIZATION,
                    locale, PortletPropsValues.COLUMN_GROUP_BASE);
            ColumnGroupDefinition columnDetailGroup = ColumnGroupDefinitionLocalServiceUtil
                    .searchGroupDisplayName(groupDisplayName, tableDefinitionId, 0);
            ColumnGroupDefinition columnGroupInDetailPage = columnDetailGroup;
            if (columnDetailGroup == null) {
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil
                        .createColumnGroupDefinition(IDGenerator
                                .increment(ColumnGroupDefinition.class.getName()));
                columnGroupInDetailPage.setDisplayIndex(0);
                columnGroupInDetailPage.setIsDisplay(DISPALY_1);
                columnGroupInDetailPage.setGroupDisplayName(groupDisplayName);
                columnGroupInDetailPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInDetailPage.setGroupType(PC_COLUMN_GROUP_TYPE_DETAIL);
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil
                        .updateColumnGroupDefinition(columnGroupInDetailPage);
            }
    
            ColumnGroupDefinition columnEditGroup = ColumnGroupDefinitionLocalServiceUtil
                    .searchGroupDisplayName(groupDisplayName, tableDefinitionId, 1);
            ColumnGroupDefinition columnGroupInEditPage = columnEditGroup;
            if (columnEditGroup == null) {
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil
                        .createColumnGroupDefinition(IDGenerator
                                .increment(ColumnGroupDefinition.class.getName()));
                columnGroupInEditPage.setDisplayIndex(0);
                columnGroupInEditPage.setIsDisplay(DISPALY_1);
                columnGroupInEditPage.setGroupDisplayName(groupDisplayName);
                columnGroupInEditPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInEditPage.setGroupType(PC_COLUMN_GROUP_TYPE_EDIT);
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil
                        .updateColumnGroupDefinition(columnGroupInEditPage);
            }
    
            String[] selectType = ColumnConst.ACTIVITY_SELECT_TYPE;
            String[] textType = ColumnConst.ACTIVITY_TEXT_TYPE;
            String[] textareaType = ColumnConst.ACTIVITY_TEXTAREA_TYPE;
            String[] pkType = ColumnConst.ACTIVITY_PK_TYPE;
            String[] dateType = ColumnConst.ACTIVITY_DATE_TYPE;
            String[] unionType = ColumnConst.ACTIVITY_UNION_TYPE;
            String[] booleanType = ColumnConst.ACTIVITY_BOOLEAN_TYPE;
    
            for (int i = 0; i < selectType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(selectType[i]
                        .substring(selectType[i].length() - 2));
                String columnName = selectType[i].substring(0,
                        selectType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil
                        .searchByColumnName(TableConst.CRM_Activity, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator
                                    .increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition
                            .setDefaultDisplayName("activity." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.select);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Activity + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < textType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textType[i]
                        .substring(textType[i].length() - 2));
                String columnName = textType[i].substring(0,
                        textType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil
                        .searchByColumnName(TableConst.CRM_Activity, columnName);
                if (entity == null) {
    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator
                                    .increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition
                            .setDefaultDisplayName("activity." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.text);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
    
                    if (columnName.equals("name")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition
                                .setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
    
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Activity + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < textareaType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textareaType[i]
                        .substring(textareaType[i].length() - 2));
                String columnName = textareaType[i].substring(0,
                        textareaType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil
                        .searchByColumnName(TableConst.CRM_Activity, columnName);
                if (entity == null) {
    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator
                                    .increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition
                            .setDefaultDisplayName("activity." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.textarea);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
    
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Activity + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < pkType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(pkType[i]
                        .substring(pkType[i].length() - 2));
                String columnName = pkType[i].substring(0, pkType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil
                        .searchByColumnName(TableConst.CRM_Activity, columnName);
                if (entity == null) {
    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator
                                    .increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition
                            .setDefaultDisplayName("activity." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.pk);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Activity + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < dateType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(dateType[i]
                        .substring(dateType[i].length() - 2));
                String columnName = dateType[i].substring(0,
                        dateType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil
                        .searchByColumnName(TableConst.CRM_Activity, columnName);
                if (entity == null) {
    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator
                                    .increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition
                            .setDefaultDisplayName("activity." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.date);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Activity + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < unionType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(unionType[i]
                        .substring(unionType[i].length() - 2));
                String columnName = unionType[i].substring(0,
                        unionType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil
                        .searchByColumnName(TableConst.CRM_Activity, columnName);
                if (entity == null) {
    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator
                                    .increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition
                            .setDefaultDisplayName("activity." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.union);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Activity + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < booleanType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(booleanType[i]
                        .substring(booleanType[i].length() - 2));
                String columnName = booleanType[i].substring(0,
                        booleanType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil
                        .searchByColumnName(TableConst.CRM_Activity, columnName);
                if (entity == null) {
    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator
                                    .increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition
                            .setDefaultDisplayName("activity." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.boolean_);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Activity + " - " + columnName + " is exists...");
                }
            }
    
            this.initConfigField(tableDefinitionId, TableConst.CRM_Activity);
    
            ColumnGroupDefinition columnGroup_edit_4_android = createGroup4Android(TableConst.CRM_Activity, locale, ANDROID_COLUMN_GROUP_TYPE_EDIT, PortletPropsValues.COLUMN_GROUP_BASE, 0);
            ColumnGroupDefinition columnGroup_detail_4_android = createGroup4Android(TableConst.CRM_Activity, locale, ANDROID_COLUMN_GROUP_TYPE_DETAIL, PortletPropsValues.COLUMN_GROUP_BASE, 0);
    
            List<ColumnColumnGroupDefinition> baseGroupColumnEdit_android = ColumnColumnGroupDefinitionLocalServiceUtil
                    .searchByColumnGroupDefinitionId(columnGroup_edit_4_android.getColumnGroupDefinitionId());
            if (!Validator.isNotNull(baseGroupColumnEdit_android)) {
                String[] baseGroupColumns = ColumnConst.ACTIVITY_GROUP_COLUMNS_4_ANDROID;
                for (int i = 0; i < baseGroupColumns.length; i++) {
                    String columnName = baseGroupColumns[i];
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Activity, columnName);
                    ColumnColumnGroupDefinition columnColumnGroupInDetailPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInDetailPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInDetailPage.setColumnGroupDefinitionId(columnGroup_detail_4_android.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.updateColumnColumnGroupDefinition(columnColumnGroupInDetailPage);
    
                    ColumnColumnGroupDefinition columnColumnGroupInEditPage = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroupInEditPage.setColumnDefinitionId(columnDefinition.getColumnDefinitionId());
                    columnColumnGroupInEditPage.setColumnGroupDefinitionId(columnGroup_edit_4_android.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.updateColumnColumnGroupDefinition(columnColumnGroupInEditPage);
                }
            }
    
            
            String[] notDisplayInEditPage = ColumnConst.ACTIVITY_NOT_DISPLAY_IN_EDIT_PAGE;
            for (int i = 0; i < notDisplayInEditPage.length; i++) {
                String columnName = notDisplayInEditPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .searchByColumnName(TableConst.CRM_Activity, columnName);
                columnDefinition.setDisplayInEditPage(false);
                ColumnDefinitionLocalServiceUtil.updateColumnDefinition(
                        columnDefinition, true);
            }
    
            String[] notUseInDetailPage = ColumnConst.ACTIVITY_NOT_USE_IN_DETAIL_PAGE;
            for (int i = 0; i < notUseInDetailPage.length; i++) {
                String columnName = notUseInDetailPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                    .searchByColumnName(TableConst.CRM_Activity, columnName);
                long columnId = columnDefinition.getColumnDefinitionId();
                List<ColumnColumnGroupDefinition> cccgds = ColumnColumnGroupDefinitionLocalServiceUtil.searchByColumnDefinitionId(columnId);
                if (Validator.isNotNull(cccgds)) {
                    for (ColumnColumnGroupDefinition cccgd : cccgds) {
                        long columnGroupId = cccgd.getColumnGroupDefinitionId();
                        ColumnGroupDefinition columnGroup = ColumnGroupDefinitionLocalServiceUtil
                                .getColumnGroupDefinition(columnGroupId);
                        if (columnGroup.getGroupType() == 0) {
                            ColumnColumnGroupDefinitionLocalServiceUtil
                                    .deleteColumnColumnGroupDefinition(cccgd);
                        }
                    }
                }
            }
        }
    
        private void initializingProductColumn(long companyId) throws SystemException, PortalException {
    
            long tableDefinitionId = TableDefinitionLocalServiceUtil
                    .searchByTableName(TableConst.CRM_Product);
            Company company = CompanyLocalServiceUtil.getCompany(companyId);
            Locale locale = company.getLocale();
            String groupDisplayName = LanguageUtil.get(PortletIDs.INITIALIZATION,
                    locale, PortletPropsValues.COLUMN_GROUP_BASE);
            ColumnGroupDefinition columnDetailGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(groupDisplayName, tableDefinitionId, 0);
            ColumnGroupDefinition columnGroupInDetailPage = columnDetailGroup;
            if (columnDetailGroup == null){
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil
                        .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInDetailPage.setDisplayIndex(0);
                columnGroupInDetailPage.setIsDisplay(DISPALY_1);
                columnGroupInDetailPage.setGroupDisplayName(groupDisplayName);
                columnGroupInDetailPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInDetailPage.setGroupType(PC_COLUMN_GROUP_TYPE_DETAIL);
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil
                    .updateColumnGroupDefinition(columnGroupInDetailPage);
            }
            ColumnGroupDefinition columnEditGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(groupDisplayName, tableDefinitionId, 1);
            ColumnGroupDefinition columnGroupInEditPage = columnEditGroup;
            if (columnEditGroup == null){
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil.createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInEditPage.setDisplayIndex(0);
                columnGroupInEditPage.setIsDisplay(DISPALY_1);
                columnGroupInEditPage.setGroupDisplayName(groupDisplayName);
                columnGroupInEditPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInEditPage.setGroupType(PC_COLUMN_GROUP_TYPE_EDIT);
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil
                        .updateColumnGroupDefinition(columnGroupInEditPage);
            }
            
            String[] selectType = ColumnConst.PRODUCT_SELECT_TYPE;
            String[] textType = ColumnConst.PRODUCT_TEXT_TYPE;
            String[] textareaType = ColumnConst.PRODUCT_TEXTAREA_TYPE;
            String[] pkType = ColumnConst.PRODUCT_PK_TYPE;
            String[] floatType = ColumnConst.PRODUCT_FLOAT_TYPE;
            String[] dateType = ColumnConst.PRODUCT_DATE_TYPE;
    
            for (int i = 0; i < selectType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(selectType[i]
                        .substring(selectType[i].length() - 2));
                String columnName = selectType[i].substring(0, selectType[i]
                        .length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Product, columnName);
                if (entity == null) {
                    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("product." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.select);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    ColumnDefinitionLocalServiceUtil
                        .updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Product + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < textType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textType[i]
                        .substring(textType[i].length() - 2));
                String columnName = textType[i].substring(0,
                        textType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Product, columnName);
                if (entity == null) {
                    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                    .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("product." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.text);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    if (columnName.equals("productName")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition
                                .setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
                    
                    ColumnDefinitionLocalServiceUtil
                    .updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Product + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < pkType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(pkType[i] .substring(pkType[i].length() - 2));
                String columnName = pkType[i].substring(0,
                        pkType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Product, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("product." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.pk);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    ColumnDefinitionLocalServiceUtil
                        .updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                }
            }
    
            for (int i = 0; i < textareaType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textareaType[i].substring(textareaType[i].length() - 2));
                String columnName = textareaType[i].substring(0, textareaType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Product, columnName);
                if (entity == null) {
                    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("product." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.textarea);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),columnGroupInEditPage.getColumnGroupDefinitionId(),columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Product + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < floatType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(floatType[i].substring(floatType[i].length() - 2));
                String columnName = floatType[i].substring(0, floatType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Product, columnName);
                if (entity == null) {
                    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("product." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.float_);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),columnGroupInEditPage.getColumnGroupDefinitionId(),columnGroupInDetailPage.getColumnGroupDefinitionId());
                    _log.info("Add " + TableConst.CRM_Product + " - " + columnName + " is successfull...");
                } else {
                    _log.info(TableConst.CRM_Product + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < dateType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(dateType[i].substring(dateType[i].length() - 2));
                String columnName = dateType[i].substring(0, dateType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Product, columnName);
                if (entity == null) {
                    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("product." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.date);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),columnGroupInEditPage.getColumnGroupDefinitionId(),columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Product + " - " + columnName + " is exists...");
                }
            }
            
            String[] notDiaplayInEditPage = ColumnConst.PRODUCT_NOT_DISPLAY_IN_EDIT_PAGE;
            for (int i = 0; i < notDiaplayInEditPage.length; i++) {
                String columnName = notDiaplayInEditPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .searchByColumnName(TableConst.CRM_Product, columnName);
                columnDefinition.setDisplayInEditPage(false);
                ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition, true);
            }
            
            String[] notDiaplayInDetailPage = ColumnConst.PRODUCT_NOT_USE_IN_DETAIL_PAGE;
            for (int i = 0; i < notDiaplayInDetailPage.length; i++) {
                String columnName = notDiaplayInDetailPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .searchByColumnName(TableConst.CRM_Product, columnName);
    
                long columnId = columnDefinition.getColumnDefinitionId();
                List<ColumnColumnGroupDefinition> cccgds = ColumnColumnGroupDefinitionLocalServiceUtil.searchByColumnDefinitionId(columnId);
                if (Validator.isNotNull(cccgds)) {
                    for (ColumnColumnGroupDefinition cccgd : cccgds) {
                        long columnGroupId = cccgd.getColumnGroupDefinitionId();
                        ColumnGroupDefinition columnGroup = ColumnGroupDefinitionLocalServiceUtil
                                .getColumnGroupDefinition(columnGroupId);
                        if (columnGroup.getGroupType() == 0) {
                            ColumnColumnGroupDefinitionLocalServiceUtil
                                    .deleteColumnColumnGroupDefinition(cccgd);
                        }
                    }
                }
            }
            
            this.initConfigField(tableDefinitionId,TableConst.CRM_Product);
        }
    
        private void initializingContractColumn(long companyId) throws SystemException, PortalException {
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(TableConst.CRM_Contract);
    
            Company company = CompanyLocalServiceUtil.getCompany(companyId);
            Locale locale = company.getLocale();
            String groupDisplayName = LanguageUtil.get(PortletIDs.INITIALIZATION,locale, PortletPropsValues.COLUMN_GROUP_BASE);
            ColumnGroupDefinition columnDetailGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(groupDisplayName, tableDefinitionId, 0);
            ColumnGroupDefinition columnGroupInDetailPage = columnDetailGroup;
            if (columnDetailGroup == null){
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil
                    .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInDetailPage.setDisplayIndex(0);
                columnGroupInDetailPage.setIsDisplay(DISPALY_1);
                columnGroupInDetailPage.setGroupDisplayName(groupDisplayName);
                columnGroupInDetailPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInDetailPage.setGroupType(PC_COLUMN_GROUP_TYPE_DETAIL);
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil.updateColumnGroupDefinition(columnGroupInDetailPage);
            }
    
            ColumnGroupDefinition columnEditGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(groupDisplayName, tableDefinitionId, 1);
            ColumnGroupDefinition columnGroupInEditPage = columnEditGroup;
            if (columnEditGroup == null){
                
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil
                    .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInEditPage.setDisplayIndex(0);
                columnGroupInEditPage.setIsDisplay(DISPALY_1);
                columnGroupInEditPage.setGroupDisplayName(groupDisplayName);
                columnGroupInEditPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInEditPage.setGroupType(PC_COLUMN_GROUP_TYPE_EDIT);
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil.updateColumnGroupDefinition(columnGroupInEditPage);
            }
    
            String[] textType = ColumnConst.CONTRACT_TEXT_TYPE;
            String[] pkType = ColumnConst.CONTRACT_PK_TYPE;
            String[] dateType = ColumnConst.CONTRACT_DATE_TYPE;
            String[] textareaType = ColumnConst.CONTRACT_TEXTAREA_TYPE;
            String[] selectType = ColumnConst.CONTRACT_SELECT_TYPE;
            String[] doubleType = ColumnConst.CONTRACT_DOUBLE_TYPE;
    
            for (int i = 0; i < textType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textType[i].substring(textType[i].length() - 2));
                String columnName = textType[i].substring(0,textType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Contract, columnName);
                if (entity == null) {
                    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                    .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("contract." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.text);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    if (columnName.equals("title") || columnName.equals("code")
                            || columnName.equals("amount")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition
                                .setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Contract + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < pkType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(pkType[i].substring(pkType[i].length() - 2));
                String columnName = pkType[i].substring(0,pkType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Contract, columnName);
                if (entity == null) {
                    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("contract." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.pk);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    if (columnName.equals("customerId")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition
                                .setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
                    
                    ColumnDefinitionLocalServiceUtil
                    .updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Contract + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < dateType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(dateType[i].substring(dateType[i].length() - 2));
                String columnName = dateType[i].substring(0,dateType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Contract, columnName);
                if (entity == null) {
                    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                    .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("contract." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.date);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    ColumnDefinitionLocalServiceUtil
                    .updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Contract + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < textareaType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textareaType[i].substring(textareaType[i].length() - 2));
                String columnName = textareaType[i].substring(0, textareaType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Contract, columnName);
                if (entity == null) {
                    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("contract." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.textarea);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),columnGroupInEditPage.getColumnGroupDefinitionId(),columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Contract + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < selectType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(selectType[i].substring(selectType[i].length() - 2));
                String columnName = selectType[i].substring(0, selectType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Contract, columnName);
                if (entity == null) {
                    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("contract." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.select);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),columnGroupInEditPage.getColumnGroupDefinitionId(),columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Contract + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < doubleType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(doubleType[i].substring(doubleType[i].length() - 2));
                String columnName = doubleType[i].substring(0, doubleType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_Contract, columnName);
                if (entity == null) {
                    
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("contract." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.double_);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),columnGroupInEditPage.getColumnGroupDefinitionId(),columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_Contract + " - " + columnName + " is exists...");
                }
            }
            
            this.initConfigField(tableDefinitionId, TableConst.CRM_Contract);
            
            String[] notDisplayInEditPage = ColumnConst.CONTRACT_NOT_DISPLAY_IN_EDIT_PAGE;
            for (int i = 0; i < notDisplayInEditPage.length; i++) {
                String columnName = notDisplayInEditPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                .searchByColumnName(TableConst.CRM_Contract, columnName);
                columnDefinition.setDisplayInEditPage(false);
                ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition, true);
            }
            
            String[] notDisplayInDetailPage = ColumnConst.CONTRACT_NOT_USE_IN_DETAIL_PAGE;
            for (int i = 0; i < notDisplayInDetailPage.length; i++) {
                String columnName = notDisplayInDetailPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                .searchByColumnName(TableConst.CRM_Contract, columnName);
    
                long columnId = columnDefinition.getColumnDefinitionId();
                List<ColumnColumnGroupDefinition> cccgds = ColumnColumnGroupDefinitionLocalServiceUtil.searchByColumnDefinitionId(columnId);
                if (Validator.isNotNull(cccgds)) {
                    for (ColumnColumnGroupDefinition cccgd : cccgds) {
                        long columnGroupId = cccgd.getColumnGroupDefinitionId();
                        ColumnGroupDefinition columnGroup = ColumnGroupDefinitionLocalServiceUtil
                                .getColumnGroupDefinition(columnGroupId);
                        if (columnGroup.getGroupType() == 0) {
                            ColumnColumnGroupDefinitionLocalServiceUtil
                                    .deleteColumnColumnGroupDefinition(cccgd);
                        }
                    }
                }
            }
        }
    
        private void initializingOperatorColumn(long companyId) throws SystemException, PortalException {
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(TableConst.OPERATOR_Operator);
            
            String[] textType = ColumnConst.OPERATOR_TEXT_TYPE;
            String[] dateType = ColumnConst.OPERATOR_DATE_TYPE;
            String[] pkType = ColumnConst.OPERATOR_PK_TYPE;
    
            for (int i = 0; i < pkType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(pkType[i].substring(pkType[i].length() - 2));
                String columnName = pkType[i].substring(0, pkType[i].length() - 2);
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.OPERATOR_Operator, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("operator." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.pk);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                }
            }
            
            for (int i = 0; i < textType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textType[i].substring(textType[i].length() - 2));
                String columnName = textType[i].substring(0,textType[i].length() - 2);
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.OPERATOR_Operator, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("operator." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.text);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
        
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                }
            }
            for (int i = 0; i < dateType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(dateType[i].substring(dateType[i].length() - 2));
                String columnName = dateType[i].substring(0,dateType[i].length() - 2);
    
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.OPERATOR_Operator, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("operator." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.date);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                }
            }
        }
        
        private void initializingRPlan(long companyId) throws SystemException, PortalException {
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(TableConst.CRM_RPLAN);
            Company company = CompanyLocalServiceUtil.getCompany(companyId);
            Locale locale = company.getLocale();
            String groupDisplayName = LanguageUtil.get(PortletIDs.INITIALIZATION,
            locale, PortletPropsValues.COLUMN_GROUP_BASE);
            ColumnGroupDefinition columnDetailGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(groupDisplayName, tableDefinitionId, 0);
            ColumnGroupDefinition columnGroupInDetailPage = columnDetailGroup;
            if (columnDetailGroup == null){
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil
                    .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInDetailPage.setDisplayIndex(0);
                columnGroupInDetailPage.setIsDisplay(DISPALY_1);
                columnGroupInDetailPage.setGroupDisplayName(groupDisplayName);
                columnGroupInDetailPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInDetailPage.setGroupType(PC_COLUMN_GROUP_TYPE_DETAIL);
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil
                    .updateColumnGroupDefinition(columnGroupInDetailPage);
            }
            ColumnGroupDefinition columnEditGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(groupDisplayName, tableDefinitionId, 1);
            ColumnGroupDefinition columnGroupInEditPage = columnEditGroup;
            if (columnEditGroup == null){
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil.createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInEditPage.setDisplayIndex(0);
                columnGroupInEditPage.setIsDisplay(DISPALY_1);
                columnGroupInEditPage.setGroupDisplayName(groupDisplayName);
                columnGroupInEditPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInEditPage.setGroupType(PC_COLUMN_GROUP_TYPE_EDIT);
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil
                    .updateColumnGroupDefinition(columnGroupInEditPage);
            }
            
            String[] textType = ColumnConst.RPLAN_TEXT_TYPE;
            String[] dateType = ColumnConst.RPLAN_DATE_TYPE;
            String[] pkType = ColumnConst.RPLAN_PK_TYPE;
            String[] floatType = ColumnConst.RPLAN_FLOAT_TYPE;
            String[] selectType = ColumnConst.RPLAN_SELECT_TYPE;
            String[] textAreaType = ColumnConst.RPLAN_TEXTAREA_TYPE;
            for (int i = 0; i < textType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textType[i].substring(textType[i].length() - 2));
                String columnName = textType[i].substring(0,textType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_RPLAN, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("receivablesPlan." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.text);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    if (columnName.equals("receivablesPlanCode")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition.setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
        
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_RPLAN + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < dateType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(dateType[i].substring(dateType[i].length() - 2));
                String columnName = dateType[i].substring(0,dateType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_RPLAN, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("receivablesPlan." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.date);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_RPLAN + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < pkType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(pkType[i].substring(pkType[i].length() - 2));
                String columnName = pkType[i].substring(0,pkType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_RPLAN, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("receivablesPlan." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.pk);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    if (columnName.equals("customerId") || columnName.equals("orderId")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition.setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_RPLAN + " - " + columnName + " is exists...");
                }
            }
    
            for (int i = 0; i < floatType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(floatType[i].substring(floatType[i].length() - 2));
                String columnName = floatType[i].substring(0,floatType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_RPLAN, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("receivablesPlan." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.float_);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_RPLAN + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < selectType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(selectType[i].substring(selectType[i].length() - 2));
                String columnName = selectType[i].substring(0,selectType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_RPLAN, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("receivablesPlan." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.select);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_RPLAN + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < textAreaType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textAreaType[i].substring(textAreaType[i].length() - 2));
                String columnName = textAreaType[i].substring(0,textAreaType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_RPLAN, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("receivablesPlan." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.textarea);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_RPLAN + " - " + columnName + " is exists...");
                }
            }
            
            String[] notDisplayInEditPage = ColumnConst.RPLAN_NOT_DISPLAY_IN_EDIT_PAGE;
            for (int i = 0; i < notDisplayInEditPage.length; i++) {
                String columnName = notDisplayInEditPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_RPLAN, columnName);
                columnDefinition.setDisplayInEditPage(false);
                ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition, true);
            }
            
    //        String[] notDisplayInDetailPage = ColumnConst.RPLAN_NOT_DISPLAY_IN_DETAIL_PAGE;
    //        for (int i = 0; i < notDisplayInDetailPage.length; i++) {
    //            String columnName = notDisplayInDetailPage[i];
    //            ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_RPLAN, columnName);
    //            columnDefinition.setDisplayInDetailPage(false);
    //            ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition, true);
    //        }
            
            String[] notUseInDetailPage = ColumnConst.RPLAN_NOT_USE_IN_DETAIL_PAGE;
            for (int i = 0; i < notUseInDetailPage.length; i++) {
                String columnName = notUseInDetailPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_RPLAN, columnName);
    
                long columnId = columnDefinition.getColumnDefinitionId();
                List<ColumnColumnGroupDefinition> cccgds = ColumnColumnGroupDefinitionLocalServiceUtil.searchByColumnDefinitionId(columnId);
                if (Validator.isNotNull(cccgds)) {
                    for (ColumnColumnGroupDefinition cccgd : cccgds) {
                        long columnGroupId = cccgd.getColumnGroupDefinitionId();
                        ColumnGroupDefinition columnGroup = ColumnGroupDefinitionLocalServiceUtil
                                .getColumnGroupDefinition(columnGroupId);
                        if (columnGroup.getGroupType() == 0) {
                            ColumnColumnGroupDefinitionLocalServiceUtil
                                    .deleteColumnColumnGroupDefinition(cccgd);
                        }
                    }
                }
            }
        }
        
        private void initializingRRecord(long companyId) throws SystemException, PortalException {
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(TableConst.CRM_RRECORD);
            Company company = CompanyLocalServiceUtil.getCompany(companyId);
            Locale locale = company.getLocale();
            String groupDisplayName = LanguageUtil.get(PortletIDs.INITIALIZATION,
                    locale, PortletPropsValues.COLUMN_GROUP_BASE);
            ColumnGroupDefinition columnDetailGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(
                    groupDisplayName, tableDefinitionId, 0);
            ColumnGroupDefinition columnGroupInDetailPage = columnDetailGroup;
            if (columnDetailGroup == null){
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil
                    .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInDetailPage.setDisplayIndex(0);
                columnGroupInDetailPage.setIsDisplay(DISPALY_1);
                columnGroupInDetailPage.setGroupDisplayName(groupDisplayName);
                columnGroupInDetailPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInDetailPage.setGroupType(PC_COLUMN_GROUP_TYPE_DETAIL);
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil
                    .updateColumnGroupDefinition(columnGroupInDetailPage);
            }
            ColumnGroupDefinition columnEditGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(groupDisplayName, tableDefinitionId, 1);
            ColumnGroupDefinition columnGroupInEditPage = columnEditGroup;
            if (columnEditGroup == null){
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil.createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInEditPage.setDisplayIndex(0);
                columnGroupInEditPage.setIsDisplay(DISPALY_1);
                columnGroupInEditPage.setGroupDisplayName(groupDisplayName);
                columnGroupInEditPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInEditPage.setGroupType(PC_COLUMN_GROUP_TYPE_EDIT);
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil
                    .updateColumnGroupDefinition(columnGroupInEditPage);
            }
            String[] textType = ColumnConst.RRECORD_TEXT_TYPE;
            String[] dateType = ColumnConst.RRECORD_DATE_TYPE;
            String[] pkType = ColumnConst.RRECORD_PK_TYPE;
            String[] floatType = ColumnConst.RRECORD_FLOAT_TYPE;
            String[] textareaType = ColumnConst.RRECORD_TEXTAREA_TYPE;
            for (int i = 0; i < textType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textType[i].substring(textType[i].length() - 2));
                String columnName = textType[i].substring(0,textType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(
                        TableConst.CRM_RRECORD, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("receivablesRecord." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.text);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    if (columnName.equals("receivablesRecordCode")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition.setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),columnGroupInEditPage.getColumnGroupDefinitionId(),columnGroupInDetailPage.getColumnGroupDefinitionId());
    
                } else {
                    _log.info(TableConst.CRM_RRECORD + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < dateType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(dateType[i].substring(dateType[i].length() - 2));
                String columnName = dateType[i].substring(0,dateType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(
                        TableConst.CRM_RRECORD, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("receivablesRecord." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.date);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),columnGroupInEditPage.getColumnGroupDefinitionId(),columnGroupInDetailPage.getColumnGroupDefinitionId());
    
                } else {
                    _log.info(TableConst.CRM_RRECORD + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < pkType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(pkType[i].substring(pkType[i].length() - 2));
                String columnName = pkType[i].substring(0,pkType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_RRECORD, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("receivablesRecord." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.pk);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    if (columnName.equals("customerId")) {
                        columnDefinition.setVerifyType(FormConst.VERIFY_NOT_NULL);
                        columnDefinition.setVerifyTips(PortletPropsValues.VERIFY_NOT_NULL_TIPS);
                    }
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),columnGroupInEditPage.getColumnGroupDefinitionId(),columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_RRECORD + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < floatType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(floatType[i].substring(floatType[i].length() - 2));
                String columnName = floatType[i].substring(0,floatType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_RRECORD, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("receivablesRecord." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.float_);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),columnGroupInEditPage.getColumnGroupDefinitionId(),columnGroupInDetailPage.getColumnGroupDefinitionId());
    
                } else {
                    _log.info(TableConst.CRM_RRECORD + " - " + columnName + " is exists...");
                }
            }
            
            for (int i = 0; i < textareaType.length; i++) {
                int defaultDisplayIndex = Integer.valueOf(textareaType[i].substring(textareaType[i].length() - 2));
                String columnName = textareaType[i].substring(0,textareaType[i].length() - 2);
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(TableConst.CRM_RRECORD, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName(columnName);
                    columnDefinition.setDefaultDisplayName("receivablesRecord." + columnName);
                    columnDefinition.setDefaultFormType(FormConst.textarea);
                    columnDefinition.setDefaultDisplayIndex(defaultDisplayIndex);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(DISPALY_1);
                    columnDefinition.setDisplayInEditPage(DISPALY_1);
                    columnDefinition.setIsDisplayInPage(DISPALY_1);
                    
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                    this.addColumnGroup(columnDefinition.getColumnDefinitionId(),
                            columnGroupInEditPage.getColumnGroupDefinitionId(),
                            columnGroupInDetailPage.getColumnGroupDefinitionId());
                } else {
                    _log.info(TableConst.CRM_RRECORD + " - " + columnName + " is exists...");
                }
            }
            
            String[] notDisplayInEditPage = ColumnConst.RRECORD_NOT_DISPLAY_IN_EDIT_PAGE;
            for (int i = 0; i < notDisplayInEditPage.length; i++) {
                String columnName = notDisplayInEditPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(
                        TableConst.CRM_RRECORD, columnName);
                columnDefinition.setDisplayInEditPage(false);
                ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition, true);
            }
    
            String[] notDisplayInDetailPage = ColumnConst.RRECORD_NOT_USE_IN_DETAIL_PAGE;
            for (int i = 0; i < notDisplayInDetailPage.length; i++) {
                String columnName = notDisplayInDetailPage[i];
                ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil.searchByColumnName(
                        TableConst.CRM_RRECORD, columnName);
    
                long columnId = columnDefinition.getColumnDefinitionId();
                List<ColumnColumnGroupDefinition> cccgds = ColumnColumnGroupDefinitionLocalServiceUtil.searchByColumnDefinitionId(columnId);
                if (Validator.isNotNull(cccgds)) {
                    for (ColumnColumnGroupDefinition cccgd : cccgds) {
                        long columnGroupId = cccgd.getColumnGroupDefinitionId();
                        ColumnGroupDefinition columnGroup = ColumnGroupDefinitionLocalServiceUtil
                                .getColumnGroupDefinition(columnGroupId);
                        if (columnGroup.getGroupType() == 0) {
                            ColumnColumnGroupDefinitionLocalServiceUtil
                                    .deleteColumnColumnGroupDefinition(cccgd);
                        }
                    }
                }
            }
        }
        
        private void initConfigField(long tableDefinitionId, String tableName) throws SystemException, NoSuchTableDefinitionException{
            if (tableName.equals(TableConst.CRM_Customer) || tableName.equals(TableConst.CRM_Product) || tableName.equals(TableConst.CRM_Contract)) {
                for (int i = 1; i < 11; i++) {
                    String columnName = "strField" + i;
                    ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(tableName, columnName);
                    if (entity == null) {
                        ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                        columnDefinition.setColumnName(columnName);
                        columnDefinition.setDefaultFormType(FormConst.text);
                        columnDefinition.setTableDefinitionId(tableDefinitionId);
                        columnDefinition.setDisplayInDetailPage(false);
                        columnDefinition.setDisplayInEditPage(false);
                        columnDefinition.setIsDisplayInPage(false);
                        columnDefinition.setIsCustom(true);
                        ColumnDefinitionLocalServiceUtil
                        .updateColumnDefinition(columnDefinition);
                    }
                }
            } else {
                for (int i = 1; i < 9; i++) {
                    String columnName = "strField" + i;
                    ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(tableName, columnName);
                    if (entity == null) {
                        ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                        columnDefinition.setColumnName(columnName);
                        columnDefinition.setDefaultFormType(FormConst.text);
                        columnDefinition.setTableDefinitionId(tableDefinitionId);
                        columnDefinition.setDisplayInDetailPage(false);
                        columnDefinition.setDisplayInEditPage(false);
                        columnDefinition.setIsDisplayInPage(false);
                        columnDefinition.setIsCustom(true);
                        ColumnDefinitionLocalServiceUtil
                        .updateColumnDefinition(columnDefinition);
                    }
                }
            }
            
            if (tableName.equals(TableConst.CRM_Customer) || tableName.equals(TableConst.CRM_Product) || tableName.equals(TableConst.CRM_Contact) || tableName.equals(TableConst.CRM_Contract)) {
                for (int i = 1; i < 5; i++) {
                    String columnName = "textareaField" + i;
                    ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(tableName, columnName);
                    if (entity == null) {
                        ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                        columnDefinition.setColumnName("textareaField" + i);
                        columnDefinition.setDefaultFormType(FormConst.textarea);
                        columnDefinition.setTableDefinitionId(tableDefinitionId);
                        columnDefinition.setDisplayInDetailPage(false);
                        columnDefinition.setDisplayInEditPage(false);
                        columnDefinition.setIsDisplayInPage(false);
                        columnDefinition.setIsCustom(true);
                        ColumnDefinitionLocalServiceUtil
                                .updateColumnDefinition(columnDefinition);
                    }
                }
            } else {
                for (int i = 1; i < 3; i++) {
                    String columnName = "textareaField" + i;
                    ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(tableName, columnName);
                    if (entity == null) {
                        ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                        columnDefinition.setColumnName("textareaField" + i);
                        columnDefinition.setDefaultFormType(FormConst.textarea);
                        columnDefinition.setTableDefinitionId(tableDefinitionId);
                        columnDefinition.setDisplayInDetailPage(false);
                        columnDefinition.setDisplayInEditPage(false);
                        columnDefinition.setIsDisplayInPage(false);
                        columnDefinition.setIsCustom(true);
                        ColumnDefinitionLocalServiceUtil
                                .updateColumnDefinition(columnDefinition);
                    }
                }
            }
    
            for (int i = 1; i < 5; i++) {
                String columnName = "floatField" + i;
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(tableName, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName("floatField" + i);
                    columnDefinition.setDefaultFormType(FormConst.float_);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(false);
                    columnDefinition.setDisplayInEditPage(false);
                    columnDefinition.setIsDisplayInPage(false);
                    columnDefinition.setIsCustom(true);
                    ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                }
            }
    
            for (int i = 1; i < 5; i++) {
                String columnName = "dateField" + i;
                ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(tableName, columnName);
                if (entity == null) {
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                    columnDefinition.setColumnName("dateField" + i);
                    columnDefinition.setDefaultFormType(FormConst.date);
                    columnDefinition.setTableDefinitionId(tableDefinitionId);
                    columnDefinition.setDisplayInDetailPage(false);
                    columnDefinition.setDisplayInEditPage(false);
                    columnDefinition.setIsDisplayInPage(false);
                    columnDefinition.setIsCustom(true);
                    ColumnDefinitionLocalServiceUtil.updateColumnDefinition(columnDefinition);
                }
            }
            
            if (tableName.equals(TableConst.CRM_Customer)) {
                for (int i = 1; i < 5; i++) {
                    String columnName = "integerField" + i;
                    ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(tableName, columnName);
                    if (entity == null) {
                        ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                        columnDefinition.setColumnName(columnName);
                        columnDefinition.setDefaultFormType(FormConst.integer_);
                        columnDefinition.setTableDefinitionId(tableDefinitionId);
                        columnDefinition.setDisplayInDetailPage(false);
                        columnDefinition.setDisplayInEditPage(false);
                        columnDefinition.setIsDisplayInPage(false);
                        columnDefinition.setIsCustom(true);
                        ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                    }
                }
            } else {
                for (int i = 1; i < 3; i++) {
                    String columnName = "integerField" + i;
                    ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(tableName, columnName);
                    if (entity == null) {
                        ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                        columnDefinition.setColumnName(columnName);
                        columnDefinition.setDefaultFormType(FormConst.integer_);
                        columnDefinition.setTableDefinitionId(tableDefinitionId);
                        columnDefinition.setDisplayInDetailPage(false);
                        columnDefinition.setDisplayInEditPage(false);
                        columnDefinition.setIsDisplayInPage(false);
                        columnDefinition.setIsCustom(true);
                        ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                    }
                }
            }
            
            if (tableName.equals(TableConst.CRM_Contact) || tableName.equals(TableConst.CRM_Customer) ||
                    tableName.equals(TableConst.CRM_Activity) || tableName.equals(TableConst.CRM_Product) ||
                    tableName.equals(TableConst.CRM_Contract) || tableName.equals(TableConst.CRM_Clue) || 
                    tableName.equals(TableConst.CRM_Market) || tableName.equals(TableConst.CRM_Opportunity) || 
                    tableName.equals(TableConst.CRM_Quotation) || tableName.equals(TableConst.CRM_Order)) {
                for (int i = 1; i < 3; i++) {
                    String columnName = "attaField" + i;
                    ColumnDefinition entity = ColumnDefinitionLocalServiceUtil.searchByColumnName(tableName, columnName);
                    if (entity == null) {
                        ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                            .createColumnDefinition(IDGenerator.increment(ColumnDefinition.class.getName()));
                        columnDefinition.setColumnName(columnName);
                        columnDefinition.setDefaultFormType(FormConst.attachment);
                        columnDefinition.setTableDefinitionId(tableDefinitionId);
                        columnDefinition.setDisplayInDetailPage(false);
                        columnDefinition.setDisplayInEditPage(false);
                        columnDefinition.setIsDisplayInPage(false);
                        columnDefinition.setIsCustom(true);
                        ColumnDefinitionLocalServiceUtil
                            .updateColumnDefinition(columnDefinition);
                    }
                }
            }
        }
    
        private void addColumnGroup(Long columnId, Long columnEditGroupId, Long columnDetailGroupId) throws SystemException {
            
            ColumnColumnGroupDefinition columnColumnGroupInDetailPage = ColumnColumnGroupDefinitionLocalServiceUtil
                .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
            columnColumnGroupInDetailPage.setColumnDefinitionId(columnId);
            columnColumnGroupInDetailPage.setColumnGroupDefinitionId(columnEditGroupId);
            ColumnColumnGroupDefinitionLocalServiceUtil.addColumnColumnGroupDefinition(columnColumnGroupInDetailPage);
            
            ColumnColumnGroupDefinition columnColumnGroupInEditPage = ColumnColumnGroupDefinitionLocalServiceUtil
                .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
            columnColumnGroupInEditPage.setColumnDefinitionId(columnId);
            columnColumnGroupInEditPage.setColumnGroupDefinitionId(columnDetailGroupId);
            ColumnColumnGroupDefinitionLocalServiceUtil.addColumnColumnGroupDefinition(columnColumnGroupInEditPage);
        }
    
        private ColumnGroupDefinition createColumnGroup(
                String tableName, Locale locale, int groupType, String groupName) throws PortalException, SystemException {
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(tableName);
            String groupDisplayName = LanguageUtil.get(PortletIDs.INITIALIZATION, locale, groupName);
            ColumnGroupDefinition columnDetailGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(tableDefinitionId, groupDisplayName, groupType);
            ColumnGroupDefinition columnGroupInDetailPage = columnDetailGroup;
            if (columnDetailGroup == null){
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil
                    .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInDetailPage.setDisplayIndex(1);
                columnGroupInDetailPage.setIsDisplay(DISPALY_1);
                columnGroupInDetailPage.setGroupDisplayName(groupDisplayName);
                columnGroupInDetailPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInDetailPage.setGroupType(groupType);
                columnGroupInDetailPage = ColumnGroupDefinitionLocalServiceUtil.addColumnGroupDefinition(columnGroupInDetailPage);
            }
            return columnGroupInDetailPage;
        }
        
        private ColumnGroupDefinition createGroup4Android(String tableName,
                Locale locale, int groupTpye, String groupName, int displayIndex)
                throws SystemException, NoSuchTableDefinitionException {
            long tableDefinitionId = TableDefinitionLocalServiceUtil.searchByTableName(tableName);
            String groupDisplayName = LanguageUtil.get(PortletIDs.INITIALIZATION, locale, groupName);
    
            ColumnGroupDefinition columnEditGroup = ColumnGroupDefinitionLocalServiceUtil
                    .searchGroupDisplayName(tableDefinitionId, groupDisplayName, groupTpye);
    
            ColumnGroupDefinition columnGroupInEditPage = columnEditGroup;
            if (columnEditGroup == null) {
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil
                        .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupInEditPage.setDisplayIndex(displayIndex);
                columnGroupInEditPage.setIsDisplay(DISPALY_1);
                columnGroupInEditPage.setGroupDisplayName(groupDisplayName);
                columnGroupInEditPage.setTableDefinitionId(tableDefinitionId);
                columnGroupInEditPage.setGroupType(groupTpye);
                columnGroupInEditPage = ColumnGroupDefinitionLocalServiceUtil.addColumnGroupDefinition(columnGroupInEditPage);
            }
            
            
            return columnGroupInEditPage;
        }
        
        private void doContactInfoGroup4Clue(Locale locale, long tableDefinitionId) throws SystemException, PortalException {
            String contactGroupName = LanguageUtil.get(PortletIDs.INITIALIZATION, locale, "column.group.contact");
            ColumnGroupDefinition columnDetailGroup = ColumnGroupDefinitionLocalServiceUtil.searchGroupDisplayName(contactGroupName, tableDefinitionId, 1);
            if (columnDetailGroup == null){
                ColumnGroupDefinition columnGroupContact = ColumnGroupDefinitionLocalServiceUtil
                    .createColumnGroupDefinition(IDGenerator.increment(ColumnGroupDefinition.class.getName()));
                columnGroupContact.setDisplayIndex(1);
                columnGroupContact.setIsDisplay(DISPALY_1);
                columnGroupContact.setGroupDisplayName(contactGroupName);
                columnGroupContact.setTableDefinitionId(tableDefinitionId);
                columnGroupContact.setGroupType(PC_COLUMN_GROUP_TYPE_EDIT);
                columnGroupContact = ColumnGroupDefinitionLocalServiceUtil
                        .updateColumnGroupDefinition(columnGroupContact);
    
                String[] columnArray = new String[] { "phone", "mobile","fax", "email", "webSite", "country", "province", "city", "area", "address"};
                for (int i = 0; i < columnArray.length; i++) {
                    String columnName = columnArray[i];
                    ColumnDefinition columnDefinition = ColumnDefinitionLocalServiceUtil
                        .searchByColumnName(TableConst.CRM_Clue, columnName);
                    long columnId = columnDefinition.getColumnDefinitionId();
                    List<ColumnColumnGroupDefinition> cccgds = ColumnColumnGroupDefinitionLocalServiceUtil.searchByColumnDefinitionId(columnId);
                    if (Validator.isNotNull(cccgds)) {
                        for (ColumnColumnGroupDefinition cccgd : cccgds) {
                            long columnGroupId = cccgd.getColumnGroupDefinitionId();
                            ColumnGroupDefinition columnGroup = ColumnGroupDefinitionLocalServiceUtil
                                    .getColumnGroupDefinition(columnGroupId);
                            if (columnGroup.getGroupType() == 1) {
                                ColumnColumnGroupDefinitionLocalServiceUtil
                                        .deleteColumnColumnGroupDefinition(cccgd);
                            }
                        }
                    }
    
                    ColumnColumnGroupDefinition columnColumnGroup = ColumnColumnGroupDefinitionLocalServiceUtil
                        .createColumnColumnGroupDefinition(IDGenerator.increment(ColumnColumnGroupDefinition.class.getName()));
                    columnColumnGroup.setColumnDefinitionId(columnId);
                    columnColumnGroup.setColumnGroupDefinitionId(columnGroupContact.getColumnGroupDefinitionId());
                    ColumnColumnGroupDefinitionLocalServiceUtil.updateColumnColumnGroupDefinition(columnColumnGroup);
                }
            }
        }
        
        private static Log _log = LogFactoryUtil.getLog(InitializingDefaultColumn.class);
    
    }

    5:在Operator-Portlet这个项目中写Portlet对应的增删改查,不要忘记了还要做国际化(content文件中写国际化文件)。

    6:写对应的界面。

  • 相关阅读:
    松软科技web课堂:SQLServer之ROUND() 函数
    松软科技web课堂:SQLServer之LEN() 函数
    接口工具比较
    记录EXCEL格式和TXT文本格式之间的互转
    Fiddler安装证书
    Nginx概述及安装配置
    YSLOW(一款实用的网站性能检测工具)
    通用测试用例大全
    Macaca环境配置及样例执行
    ADB命令
  • 原文地址:https://www.cnblogs.com/airycode/p/5294544.html
Copyright © 2011-2022 走看看