/* * 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.userfacility.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.jetspeed.services.rundata.JetspeedRunData; import org.apache.turbine.util.RunData; import com.aimluck.eip.cayenne.om.portlet.EipMFacility; import com.aimluck.eip.cayenne.om.portlet.EipMFacilityGroupMap; import com.aimluck.eip.orm.Database; import com.aimluck.eip.orm.query.SelectQuery; import com.aimluck.eip.user.beans.UserLiteBean; import com.aimluck.eip.user.util.UserUtils; import com.aimluck.eip.userfacility.beans.UserFacilityLiteBean; /** * ユーザーのユーティリティクラスです。 <br /> * */ public class UserFacilityUtils { /** logger */ @SuppressWarnings("unused") private static final JetspeedLogger logger = JetspeedLogFactoryService .getLogger(UserFacilityUtils.class.getName()); /** * * @param rundata * @return */ public static List<UserFacilityLiteBean> getUserFacilityLiteBeansFromGroup( RunData rundata, String groupname) { List<UserLiteBean> tmp_u_list = UserUtils.getUserLiteBeansFromGroup(rundata, groupname, true); int t_size = tmp_u_list.size(); List<UserFacilityLiteBean> list = new ArrayList<UserFacilityLiteBean>(); UserLiteBean t_user; UserFacilityLiteBean user; for (int i = 0; i < t_size; i++) { t_user = tmp_u_list.get(i); user = new UserFacilityLiteBean(); user.initField(); user.setUserFacilityId(Integer.parseInt(t_user.getUserId())); user.setName(t_user.getUserId()); user.setAliasName(t_user.getAliasName()); user.setUserFacilityType("U"); list.add(user); } if (!("LoginUser".equals(groupname))) { // SQLの作成 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(); List<EipMFacility> list2 = Database .sql(EipMFacility.class, query) .param("groupname", groupname) .fetchList(); // ユーザデータを作成し、返却リストへ格納 for (EipMFacility record : list2) { user = new UserFacilityLiteBean(); user.initField(); user.setUserFacilityId(record.getFacilityId()); user.setName("f" + user.getUserFacilityId()); user.setAliasName(record.getFacilityName()); user.setUserFacilityType("F"); list.add(user); } } else { List<EipMFacility> aList = Database.query(EipMFacility.class).orderAscending( EipMFacility.SORT_PROPERTY).fetchList(); for (EipMFacility record : aList) { user = new UserFacilityLiteBean(); user.initField(); user.setUserFacilityId(record.getFacilityId().intValue()); user.setName("f" + user.getUserFacilityId()); user.setAliasName(record.getFacilityName()); user.setUserFacilityType("F"); list.add(user); } } return list; } public static List<UserFacilityLiteBean> getFacilityLiteBeansFromGroup( RunData rundata, int groupid) { List<UserFacilityLiteBean> facilityAllList = new ArrayList<UserFacilityLiteBean>(); // facilitygroupmap探索 SelectQuery<EipMFacilityGroupMap> mapquery = Database.query(EipMFacilityGroupMap.class); Expression mapexp = ExpressionFactory.matchExp( EipMFacilityGroupMap.GROUP_ID_PROPERTY, groupid); mapquery.setQualifier(mapexp); List<EipMFacilityGroupMap> FacilityMaps = mapquery.fetchList(); List<Integer> facilityIds = new ArrayList<Integer>(); for (EipMFacilityGroupMap map : FacilityMaps) { facilityIds.add(map.getEipMFacilityFacilityId().getFacilityId()); } SelectQuery<EipMFacility> fquery = Database.query(EipMFacility.class); if (facilityIds.size() > 0) { Expression fexp = ExpressionFactory.inDbExp( EipMFacility.FACILITY_ID_PK_COLUMN, facilityIds); fquery.setQualifier(fexp); fquery.orderAscending(EipMFacility.SORT_PROPERTY); List<EipMFacility> facility_list = fquery.fetchList(); for (EipMFacility record : facility_list) { UserFacilityLiteBean bean = new UserFacilityLiteBean(); bean.initField(); bean.setUserFacilityId(record.getFacilityId().intValue()); bean.setAliasName(record.getFacilityName()); bean.setName("f" + record.getFacilityId()); bean.setUserFacilityType("F"); facilityAllList.add(bean); } } return facilityAllList; } public static List<UserFacilityLiteBean> getAllFacilityLiteBeans( RunData rundata) { // 全設備データの羅列 List<UserFacilityLiteBean> facilityAllList = new ArrayList<UserFacilityLiteBean>(); SelectQuery<EipMFacility> fquery = Database.query(EipMFacility.class); fquery.orderAscending(EipMFacility.SORT_PROPERTY); List<EipMFacility> facility_list = fquery.fetchList(); for (EipMFacility record : facility_list) { UserFacilityLiteBean bean = new UserFacilityLiteBean(); bean.initField(); bean.setUserFacilityId(record.getFacilityId().intValue()); bean.setAliasName(record.getFacilityName()); bean.setName("f" + record.getFacilityId()); bean.setUserFacilityType("F"); facilityAllList.add(bean); } return facilityAllList; } public static UserFacilityLiteBean getUserFacilityLiteBean(RunData rundata) { JetspeedRunData jdata = (JetspeedRunData) rundata; UserFacilityLiteBean user = new UserFacilityLiteBean(); user.initField(); user.setUserFacilityId(Integer .parseInt(jdata.getJetspeedUser().getUserId())); user.setName(jdata.getJetspeedUser().getUserName()); user.setAliasName(jdata.getJetspeedUser().getFirstName(), jdata .getJetspeedUser() .getLastName()); user.setUserFacilityType("U"); return user; } }