/* * Aipo is a groupware program developed by TOWN, Inc. * Copyright (C) 2004-2015 TOWN, Inc. * http://www.aipo.com * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.aimluck.eip.facilities.util; import java.util.ArrayList; import java.util.List; import org.apache.cayenne.exp.Expression; import org.apache.cayenne.exp.ExpressionFactory; import org.apache.jetspeed.services.logging.JetspeedLogFactoryService; import org.apache.jetspeed.services.logging.JetspeedLogger; import org.apache.turbine.util.RunData; import org.apache.velocity.context.Context; import com.aimluck.eip.cayenne.om.portlet.EipMFacility; import com.aimluck.eip.cayenne.om.portlet.EipMFacilityGroup; import com.aimluck.eip.cayenne.om.portlet.EipMFacilityGroupMap; import com.aimluck.eip.common.ALEipConstants; import com.aimluck.eip.facilities.FacilityGroupResultData; import com.aimluck.eip.facilities.FacilityResultData; import com.aimluck.eip.orm.Database; import com.aimluck.eip.orm.query.Operations; import com.aimluck.eip.orm.query.SelectQuery; import com.aimluck.eip.util.ALEipUtils; /** * 設備のユーティリティクラスです。 <BR> * */ public class FacilitiesUtils { /** logger */ private static final JetspeedLogger logger = JetspeedLogFactoryService .getLogger(FacilitiesUtils.class.getName()); public static final String FACILITIES_PORTLET_NAME = "Facilities"; /** * 設備オブジェクトモデルを取得します。 <BR> * * @param rundata * @param context * @return */ public static EipMFacility getEipMFacility(RunData rundata, Context context) { String facilityid = ALEipUtils.getTemp(rundata, context, ALEipConstants.ENTITY_ID); try { if (facilityid == null || Integer.valueOf(facilityid) == null) { // Facilities IDが空の場合 logger.debug("[Facility] Empty ID..."); return null; } EipMFacility facility = Database.get(EipMFacility.class, facilityid); return facility; } catch (Exception ex) { logger.error("facilities", ex); return null; } } /** * 設備グループオブジェクトモデルを取得します。 <BR> * * @param rundata * @param context * @return */ public static EipMFacilityGroup getEipMFacilityGroup(RunData rundata, Context context) { String faclitygroupid = ALEipUtils.getTemp(rundata, context, ALEipConstants.ENTITY_ID); try { if (faclitygroupid == null || Integer.valueOf(faclitygroupid) == null) { // Facilities IDが空の場合 logger.debug("[Facility] Empty ID..."); return null; } Expression exp = ExpressionFactory.matchDbExp( EipMFacilityGroup.GROUP_ID_PK_COLUMN, faclitygroupid); List<EipMFacilityGroup> facilities = Database.query(EipMFacilityGroup.class, exp).orderAscending( EipMFacilityGroup.SORT_PROPERTY).fetchList(); if (facilities == null || facilities.size() == 0) { // 指定したFacilities IDのレコードが見つからない場合 logger.debug("[Facilities] Not found ID..."); return null; } return facilities.get(0); } catch (Exception ex) { logger.error("facilities", ex); return null; } } /** * * @param rundata * @param context */ public static List<FacilityResultData> getFacilityAllList() { List<FacilityResultData> facilityAllList = new ArrayList<FacilityResultData>(); try { List<EipMFacility> aList = Database.query(EipMFacility.class).orderAscending( EipMFacility.SORT_PROPERTY).fetchList(); for (EipMFacility record : aList) { FacilityResultData rd = new FacilityResultData(); rd.initField(); rd.setFacilityId(record.getFacilityId().longValue()); rd.setFacilityName(record.getFacilityName()); facilityAllList.add(rd); } } catch (Exception ex) { logger.error("facilities", ex); } return facilityAllList; } public static List<FacilityResultData> getFacilityList(String groupname) { List<FacilityResultData> list = new ArrayList<FacilityResultData>(); StringBuffer statement = new StringBuffer(); statement.append("SELECT DISTINCT "); statement.append(" B.FACILITY_ID, B.FACILITY_NAME, B.SORT "); statement.append("FROM eip_facility_group as A "); statement.append("LEFT JOIN eip_m_facility as B "); statement.append(" on A.FACILITY_ID = B.FACILITY_ID "); statement.append("LEFT JOIN turbine_group as C "); statement.append(" on A.GROUP_ID = C.GROUP_ID "); statement.append("WHERE C.GROUP_NAME = #bind($groupname) "); statement.append("ORDER BY B.SORT"); String query = statement.toString(); try { List<EipMFacility> list2 = Database .sql(EipMFacility.class, query) .param("groupname", groupname) .fetchList(); FacilityResultData frd; // ユーザデータを作成し、返却リストへ格納 for (EipMFacility record : list2) { frd = new FacilityResultData(); frd.initField(); frd.setFacilityId(record.getFacilityId()); frd.setFacilityName(record.getFacilityName()); list.add(frd); } } catch (Exception ex) { logger.error("[Exception]", ex); } return list; } public static List<FacilityResultData> getFacilityGroupList(Integer groupid) { List<FacilityResultData> list = new ArrayList<FacilityResultData>(); StringBuffer statement = new StringBuffer(); statement.append("SELECT DISTINCT "); statement.append(" B.FACILITY_ID, B.FACILITY_NAME, B.SORT "); statement.append("FROM eip_m_facility_group_map as A "); statement.append("LEFT JOIN eip_m_facility as B "); statement.append(" on A.FACILITY_ID = B.FACILITY_ID "); statement.append("LEFT JOIN eip_m_facility_group as C "); statement.append(" on A.GROUP_ID = C.GROUP_ID "); statement.append("WHERE C.GROUP_ID = #bind($groupid) "); statement.append("ORDER BY B.SORT"); String query = statement.toString(); try { List<EipMFacility> list2 = Database .sql(EipMFacility.class, query) .param("groupid", groupid) .fetchList(); FacilityResultData frd; // ユーザデータを作成し、返却リストへ格納 for (EipMFacility record : list2) { frd = new FacilityResultData(); frd.initField(); frd.setFacilityId(record.getFacilityId()); frd.setFacilityName(record.getFacilityName()); list.add(frd); } } catch (Exception ex) { logger.error("[Exception]", ex); } return list; } public static List<FacilityResultData> getFacilityListByGroupId(String groupId) { List<FacilityResultData> list = new ArrayList<FacilityResultData>(); // SQLの作成 StringBuffer statement = new StringBuffer(); statement.append("SELECT B.FACILITY_ID, B.FACILITY_NAME, B.SORT "); statement.append("FROM eip_m_facility_group_map as A "); statement .append("LEFT JOIN eip_m_facility as B on A.FACILITY_ID = B.FACILITY_ID "); statement.append("WHERE A.GROUP_ID = #bind($groupId) "); statement.append("ORDER BY B.SORT"); String query = statement.toString(); try { List<EipMFacility> list2 = Database.sql(EipMFacility.class, query).param( "groupId", Integer.parseInt(groupId)).fetchList(); FacilityResultData frd; // ユーザデータを作成し、返却リストへ格納 for (EipMFacility record : list2) { frd = new FacilityResultData(); frd.initField(); frd.setFacilityId(record.getFacilityId()); frd.setFacilityName(record.getFacilityName()); list.add(frd); } } catch (Exception ex) { logger.error("[Exception]", ex); } return list; } public static List<Integer> getFacilityIds(String groupname) { List<Integer> list = new ArrayList<Integer>(); // SQLの作成 StringBuffer statement = new StringBuffer(); statement.append("SELECT DISTINCT "); statement.append(" B.FACILITY_ID "); statement.append("FROM eip_facility_group as A "); statement.append("LEFT JOIN eip_m_facility as B "); statement.append(" on A.FACILITY_ID = B.FACILITY_ID "); statement.append("LEFT JOIN turbine_group as C "); statement.append(" on A.GROUP_ID = C.GROUP_ID "); statement.append("WHERE C.GROUP_NAME = #bind($groupname)"); String query = statement.toString(); try { List<EipMFacility> list2 = Database .sql(EipMFacility.class, query) .param("groupname", groupname) .fetchList(); // ユーザデータを作成し、返却リストへ格納 for (EipMFacility record : list2) { list.add(record.getFacilityId()); } } catch (Exception ex) { logger.error("[Exception]", ex); } return list; } public static List<Integer> getFacilityGroupIds(Integer groupid) { List<Integer> list = new ArrayList<Integer>(); // SQLの作成 StringBuffer statement = new StringBuffer(); statement.append("SELECT A.group_id, C.facility_id, C.facility_name "); statement.append("FROM eip_m_facility_group AS A "); statement.append("INNER JOIN eip_m_facility_group_map as B "); statement.append(" ON A.group_id = B.group_id "); statement.append("INNER JOIN eip_m_facility as C "); statement.append(" ON C.facility_id = B.facility_id "); statement.append("WHERE A.group_id = #bind($groupid) "); String query = statement.toString(); try { List<EipMFacility> list2 = Database .sql(EipMFacility.class, query) .param("groupid", groupid) .fetchList(); // ユーザデータを作成し、返却リストへ格納 for (EipMFacility record : list2) { list.add(record.getFacilityId()); } } catch (Exception ex) { logger.error("[Exception]", ex); } return list; } public static List<FacilityResultData> getFacilitiesFromSelectQuery( SelectQuery<EipMFacility> query) { List<FacilityResultData> list = new ArrayList<FacilityResultData>(); try { List<EipMFacility> aList = query.orderAscending(EipMFacility.SORT_PROPERTY).fetchList(); for (EipMFacility record : aList) { FacilityResultData rd = new FacilityResultData(); rd.initField(); rd.setFacilityName(record.getFacilityName()); rd.setFacilityId(record.getFacilityId().longValue()); rd.setCreateDate(record.getCreateDate()); rd.setUpdateDate(record.getUpdateDate()); list.add(rd); } } catch (Exception ex) { logger.error("[Exception]", ex); } return list; } /** * 第一引数のリストに,第二引数で指定したユーザ ID が含まれているかを検証する. * * @param memberIdList * @param memberId * @return */ public static boolean isContains(List<FacilityResultData> facilityrList, FacilityResultData rd) { int size = facilityrList.size(); long fid = rd.getFacilityId().getValue(); FacilityResultData facility = null; for (int i = 0; i < size; i++) { facility = facilityrList.get(i); if (facility.getFacilityId().getValue() == fid) { return true; } } return false; } public static List<EipMFacilityGroup> getFacilityGroupListByFacilityId( String facilityid) { try { SelectQuery<EipMFacilityGroupMap> query = Database.query(EipMFacilityGroupMap.class); query.where(Operations.eq( EipMFacilityGroupMap.FACILITY_ID_PROPERTY, Integer.valueOf(facilityid))); List<EipMFacilityGroupMap> maps = query.fetchList(); List<Integer> faclityGroupIdList = new ArrayList<Integer>(); for (EipMFacilityGroupMap map : maps) { faclityGroupIdList.add(map.getGroupId()); } if (faclityGroupIdList.size() > 0) { SelectQuery<EipMFacilityGroup> fquery = Database.query(EipMFacilityGroup.class); Expression exp = ExpressionFactory.inDbExp( EipMFacilityGroup.GROUP_ID_PK_COLUMN, faclityGroupIdList); fquery.setQualifier(exp); return fquery.fetchList(); } else { return null; } } catch (Exception ex) { Database.rollback(); logger.error("facilities", ex); return null; } } public static List<FacilityGroupResultData> getFacilityGroupAllList() { List<FacilityGroupResultData> facilityAllList = new ArrayList<FacilityGroupResultData>(); try { List<EipMFacilityGroup> result = Database.query(EipMFacilityGroup.class).orderAscending( EipMFacilityGroup.SORT_PROPERTY).fetchList(); for (EipMFacilityGroup group : result) { FacilityGroupResultData data = new FacilityGroupResultData(); data.initField(); data.setGroupId(group.getGroupId()); data.setGroupName(group.getGroupName()); facilityAllList.add(data); } } catch (Exception ex) { logger.error("facilities", ex); } return facilityAllList; } public static List<EipMFacility> getFacilityListByGroupId(int groupid) { try { SelectQuery<EipMFacilityGroupMap> query = Database.query(EipMFacilityGroupMap.class); query.where(Operations.eq(EipMFacilityGroupMap.GROUP_ID_PROPERTY, Integer .valueOf(groupid))); List<EipMFacilityGroupMap> maps = query.fetchList(); List<Integer> faclityIdList = new ArrayList<Integer>(); for (EipMFacilityGroupMap map : maps) { faclityIdList.add(map.getFacilityId()); } if (faclityIdList.size() > 0) { SelectQuery<EipMFacility> fquery = Database.query(EipMFacility.class); Expression exp = ExpressionFactory.inDbExp( EipMFacility.FACILITY_ID_PK_COLUMN, faclityIdList); fquery.setQualifier(exp); fquery.orderAscending(EipMFacility.SORT_PROPERTY); return fquery.fetchList(); } else { List<EipMFacility> list = new ArrayList<EipMFacility>(); return list; } } catch (Exception ex) { Database.rollback(); logger.error("facilities", ex); List<EipMFacility> list = new ArrayList<EipMFacility>(); return list; } } public static List<FacilityResultData> getFacilityResultList( List<EipMFacility> result) { List<FacilityResultData> list = new ArrayList<FacilityResultData>(); for (EipMFacility model : result) { list.add(getFacilityResultData(model)); } return list; } public static FacilityResultData getFacilityResultData(EipMFacility model) { FacilityResultData data = new FacilityResultData(); data.initField(); data.setFacilityId(model.getFacilityId()); data.setFacilityName(model.getFacilityName()); data.setNote(model.getNote()); data.setUpdateDate(model.getUpdateDate()); data.setCreateDate(model.getCreateDate()); data.setUserId(model.getUserId()); return data; } public static List<FacilityGroupResultData> getFacilityGroupResultList( List<EipMFacilityGroup> result) { List<FacilityGroupResultData> list = new ArrayList<FacilityGroupResultData>(); for (EipMFacilityGroup model : result) { list.add(getFacilityGroupResultData(model)); } return list; } public static FacilityGroupResultData getFacilityGroupResultData( EipMFacilityGroup model) { FacilityGroupResultData data = new FacilityGroupResultData(); data.initField(); data.setGroupId(model.getGroupId()); data.setGroupName(model.getGroupName()); return data; } }