/** * 一覧共通component用 * */ public with sharing abstract class CreateRelationListPagingCtrlBase { // 打勾后要不要trigger一个Event public Boolean isNeedCheckEvent { get { if (isNeedCheckEvent == null) { return false; } return isNeedCheckEvent; } set; } public Boolean isNeedSearchFirst { get { if (isNeedSearchFirst == null) { return false; } return isNeedSearchFirst; } set; } // checkEventより、遷移先のurlを返す // assignTo="{!clickLineNo}" より url を組み立てる public virtual void checkEvent() { } // 検索条件なしで、検索を行わない public Boolean isNeedRunSearch { get; set; } public abstract Boolean getIsNeedRunSearch(); // 画面パラメータ:親Id public String parentId { get; set; } // 親オブジェクトAPI名 public String selectedDataSql; public abstract String getSelectedDataSql(); // 検索元対象オブジェクトAPI名 public String originObjName; public abstract String getOriginObjName(); // 検索元対象項目セット public String originObjColumns; public abstract String getOriginObjColumns(); // 選択されたデータリスト public List selectedData { get; set; } // 選択されたデータの連絡先のIdリスト public List selectedFKIdList { get; set; } // 選択されたデータIdのSet public Set selectedIdSet { get; set; } // 画面件数毎ページ public String pageSize { get; set; } // ソートキー public String sortKey { get; set; } // ソートキー(前回) public String preSortKey { get; set; } // システムのOFFSET_LIMIT より小さい検索Limitにしたい場合、定義する public Integer searchNumMax; public abstract Integer getSearchNumMax(); // 定义 > 2000 的话, 不能用offset来翻页 // オブジェクトAPI名 public String objName; public abstract String getObjName(); // Where文 public String sqlWhereStr; public abstract String getSqlWhereStr(); public virtual String getOrderbyStr() { return null; } // 左の項目セット public String columnLeftFieldSetName; public abstract String getColumnLeftFieldSetName(); // 右の項目セット public String columnRightFieldSetName; public abstract String getColumnRightFieldSetName(); // Select 里加直接加的項目 List public abstract List getColumnFieldList(); // Hidden項目 List public virtual List getHiddenFieldList() { return new List(); } // 宽度是0的項目 public virtual String getWidth0Field() { return ''; } // 画面里直接可以输入的項目 List public virtual List getWritableColumnFieldList() { return new List(); } // getObjName 连 getOriginObjName 的 FK public abstract String getFKColumnField(); public Integer clickLineNo { get; set; } // 検索結果メッセージ表示 public Boolean showRecordCountMSG { get; set; } public virtual Boolean getShowRecordCountMSG() { return true; } // ページレイアウトを収得するのレコードタイプ public String recordTypeId; public abstract String getRecordTypeId(); // 共通コンポーネントにも参照できるwrapperリスト public List viewList; public List getViewList(){return viewList;} public abstract void setViewList(List rSObject); public CreateRelationListPagingCmpCtrl myComponentController; public CreateRelationListPagingCmpCtrl getMyComponentController() { return myComponentController; } public void setComponentController(CreateRelationListPagingCmpCtrl compController) { System.debug('SSSSSSSSSSSSSSSSS: setComponentController start'); myComponentController = compController; } public CreateRelationListPagingCtrlBase getThis() { return this; } public CreateRelationListPagingCtrlBase(){ } public void makeSelectedDataInfo() { selectedFKIdList = new List(); selectedIdSet = new Set(); for (Sobject mf : selectedData) { if (!String.isBlank(getFKColumnField()) && mf.get(getFKColumnField()) != null) { selectedFKIdList.add((Id) mf.get(getFKColumnField())); } selectedIdSet.add(mf.Id); } } public class WrapperInfo implements Comparable { public SObject sobj { get; set; } // public Map sobjMap { get; set; } public Boolean canEdit { get; set; } public Boolean hasError { get; set; } public Boolean hasFieldError { get; set; } public Integer lineNo { get; set; } public Integer orderNo { get; set; } public String changeFlg { get; set; } public Boolean check { get; set; } // 是否选择 public Boolean oldCheck { get; set; } public Integer inputInt {get; set;} // 数量 public Map additionalInfoMap {get; set;} // 追加信息 public WrapperInfo(SObject record, CreateRelationListPagingCmpCtrl myComponentController) { if (record == null) { throw new ControllerUtil.myException('new WrapperInfo with null record.'); } sobj = record; check = false; oldCheck = false; canEdit = true; // For JS index lineNo = 0; // For JS index orderNo = 0; changeFlg = '0'; additionalInfoMap = new Map(); // // field name の階層を一階層にする // sobjMap = new Map(); // for (List splitFieldPath : myComponentController.columnsLeftApi) { // if (splitFieldPath.size() == 2) { // if (record.getSObject(splitFieldPath[0]) == null) { // sobjMap.put(splitFieldPath[0] + '.' + splitFieldPath[1], ''); // } else { // sobjMap.put(splitFieldPath[0] + '.' + splitFieldPath[1], // record.getSObject(splitFieldPath[0]).get(splitFieldPath[1])); // } // } // } // for (List splitFieldPath : myComponentController.columnsRightApi) { // if (splitFieldPath.size() == 2) { // if (record.getSObject(splitFieldPath[0]) == null) { // sobjMap.put(splitFieldPath[0] + '.' + splitFieldPath[1], ''); // } else { // sobjMap.put(splitFieldPath[0] + '.' + splitFieldPath[1], // record.getSObject(splitFieldPath[0]).get(splitFieldPath[1])); // } // } // } } // 排序 public Integer compareTo(Object compareTo) { WrapperInfo compareToWrap = (WrapperInfo) compareTo; if (orderNo == null && compareToWrap.orderNo != null) { return 1; } if (orderNo == compareToWrap.orderNo) { return 0; } if (orderNo > compareToWrap.orderNo) { return 1; } return -1; } } }