/*
* 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.system;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.apache.cayenne.exp.Expression;
import org.apache.cayenne.exp.ExpressionFactory;
import org.apache.jetspeed.om.profile.Entry;
import org.apache.jetspeed.om.profile.Parameter;
import org.apache.jetspeed.om.profile.Portlets;
import org.apache.jetspeed.om.profile.Profile;
import org.apache.jetspeed.om.profile.ProfileException;
import org.apache.jetspeed.om.profile.psml.PsmlParameter;
import org.apache.jetspeed.services.JetspeedSecurity;
import org.apache.jetspeed.services.logging.JetspeedLogFactoryService;
import org.apache.jetspeed.services.logging.JetspeedLogger;
import org.apache.jetspeed.services.resources.JetspeedResources;
import org.apache.jetspeed.services.rundata.JetspeedRunData;
import org.apache.jetspeed.services.security.JetspeedSecurityException;
import org.apache.turbine.util.RunData;
import org.apache.velocity.context.Context;
import com.aimluck.eip.blog.util.BlogUtils;
import com.aimluck.eip.cabinet.util.CabinetUtils;
import com.aimluck.eip.category.util.CommonCategoryUtils;
import com.aimluck.eip.cayenne.om.account.EipMPosition;
import com.aimluck.eip.cayenne.om.account.EipMPost;
import com.aimluck.eip.cayenne.om.portlet.EipMAddressbook;
import com.aimluck.eip.cayenne.om.portlet.EipMAddressbookCompany;
import com.aimluck.eip.cayenne.om.portlet.EipMFacility;
import com.aimluck.eip.cayenne.om.portlet.EipMMailAccount;
import com.aimluck.eip.cayenne.om.portlet.EipTBlog;
import com.aimluck.eip.cayenne.om.portlet.EipTBlogComment;
import com.aimluck.eip.cayenne.om.portlet.EipTBlogEntry;
import com.aimluck.eip.cayenne.om.portlet.EipTBlogFile;
import com.aimluck.eip.cayenne.om.portlet.EipTBlogFootmarkMap;
import com.aimluck.eip.cayenne.om.portlet.EipTBlogThema;
import com.aimluck.eip.cayenne.om.portlet.EipTCabinetFile;
import com.aimluck.eip.cayenne.om.portlet.EipTCabinetFolder;
import com.aimluck.eip.cayenne.om.portlet.EipTCommonCategory;
import com.aimluck.eip.cayenne.om.portlet.EipTMail;
import com.aimluck.eip.cayenne.om.portlet.EipTMemo;
import com.aimluck.eip.cayenne.om.portlet.EipTMsgboardCategory;
import com.aimluck.eip.cayenne.om.portlet.EipTMsgboardFile;
import com.aimluck.eip.cayenne.om.portlet.EipTMsgboardTopic;
import com.aimluck.eip.cayenne.om.portlet.EipTNote;
import com.aimluck.eip.cayenne.om.portlet.EipTNoteMap;
import com.aimluck.eip.cayenne.om.portlet.EipTSchedule;
import com.aimluck.eip.cayenne.om.portlet.EipTScheduleMap;
import com.aimluck.eip.cayenne.om.portlet.EipTTimecard;
import com.aimluck.eip.cayenne.om.portlet.EipTTimeline;
import com.aimluck.eip.cayenne.om.portlet.EipTTimelineFile;
import com.aimluck.eip.cayenne.om.portlet.EipTTimelineLike;
import com.aimluck.eip.cayenne.om.portlet.EipTTimelineMap;
import com.aimluck.eip.cayenne.om.portlet.EipTTimelineUrl;
import com.aimluck.eip.cayenne.om.portlet.EipTTodo;
import com.aimluck.eip.cayenne.om.portlet.EipTTodoCategory;
import com.aimluck.eip.cayenne.om.portlet.EipTWorkflowRequest;
import com.aimluck.eip.cayenne.om.portlet.EipTWorkflowRequestMap;
import com.aimluck.eip.cayenne.om.security.TurbineUser;
import com.aimluck.eip.cayenne.om.security.TurbineUserGroupRole;
import com.aimluck.eip.common.ALAbstractFormData;
import com.aimluck.eip.common.ALDBErrorException;
import com.aimluck.eip.common.ALEipManager;
import com.aimluck.eip.common.ALEipUser;
import com.aimluck.eip.common.ALPageNotFoundException;
import com.aimluck.eip.modules.actions.common.ALAction;
import com.aimluck.eip.orm.Database;
import com.aimluck.eip.orm.query.Query;
import com.aimluck.eip.orm.query.SelectQuery;
import com.aimluck.eip.util.ALEipUtils;
/**
* サンプルデータ削除のフォームデータを管理するクラスです。 <BR>
*
*/
public class SystemDeleteSampleFormData extends ALAbstractFormData {
/** logger */
private static final JetspeedLogger logger = JetspeedLogFactoryService
.getLogger(SystemDeleteSampleFormData.class.getName());
protected List<String> fpaths = null;
/** 掲示板,ブログの添付ファイルを保管するディレクトリの指定 */
protected static final String FOLDER_FILEDIR = JetspeedResources.getString(
"aipo.filedir",
"");
protected static final String FOLDER_MAILDIR = JetspeedResources.getString(
"aipo.mail.home",
"");
private String orgId;
/**
*
* @param action
* @param rundata
* @param context
*
*
*/
@Override
public void init(ALAction action, RunData rundata, Context context)
throws ALPageNotFoundException, ALDBErrorException {
super.init(action, rundata, context);
orgId = Database.getDomainName();
}
/**
* 各フィールドを初期化します。 <BR>
*
*
*/
@Override
public void initField() {
}
/**
* DeleteSampleの各フィールドに対する制約条件を設定します。 <BR>
*
*
*/
@Override
protected void setValidator() {
}
/**
* DeleteSampleのフォームに入力されたデータの妥当性検証を行います。 <BR>
*
* @param msgList
* @return TRUE 成功 FALSE 失敗
*
*/
@Override
protected boolean validate(List<String> msgList) {
return true;
}
/**
* DeleteSampleをデータベースから読み出します。 <BR>
*
* @param rundata
* @param context
* @param msgList
* @return TRUE 成功 FALSE 失敗
*/
@Override
protected boolean loadFormData(RunData rundata, Context context,
List<String> msgList) {
return false;
}
/**
* DeleteSampleをデータベースから削除します。 <BR>
*
* @param rundata
* @param context
* @param msgList
* @return TRUE 成功 FALSE 失敗
*/
@Override
protected boolean deleteFormData(RunData rundata, Context context,
List<String> msgList) {
return false;
}
/**
* DeleteSampleをデータベースに格納します。 <BR>
*
* @param rundata
* @param context
* @param msgList
* @return TRUE 成功 FALSE 失敗
*/
@Override
protected boolean insertFormData(RunData rundata, Context context,
List<String> msgList) {
return false;
}
/**
* データベースに格納されているDeleteSampleを更新します。 <BR>
*
* @param rundata
* @param context
* @param msgList
* @return TRUE 成功 FALSE 失敗
*/
@Override
protected boolean updateFormData(RunData rundata, Context context,
List<String> msgList) {
try {
// 削除プログラム開始
List<Integer> ids = new ArrayList<Integer>();
ids.add(Integer.valueOf(4));
ids.add(Integer.valueOf(5));
ids.add(Integer.valueOf(6));
fpaths = new ArrayList<String>();
// アップデート作業
// update(ids);
// ブログ処理
updateBlog(ids);
// アドレス帳処理
updateAddressbook(ids);
// メールアカウント処理
updateMailaccount(ids);
// 共有フォルダ処理
updateCabinet(ids);
// メール処理
updateMail(ids);
if (ids != null && ids.size() > 0) {
int size = ids.size();
for (int i = 0; i < size; i++) {
fpaths.add(FOLDER_MAILDIR
+ File.separator
+ orgId
+ File.separator
+ (ids.get(i)).toString());
}
}
// メモ処理
updateMemo(ids);
// メッセージ板処理
updateMsgboard(ids);
// ノート処理
updateNote(ids);
// タイムカード処理
updateTimecard(ids);
// タイムライン処理
updateTimeline(ids);
// ToDo処理
updateTodo(ids);
// スケジュール処理
updateSchedule(ids);
// ワークフロー処理
updateWorkflow(ids);
Database.commit();
// ファイル削除
deleteFiles(fpaths);
// サンプルユーザーを非表示にする
updateUserhidden(ids);
// singletonオブジェクトのリフレッシュ
ALEipManager.getInstance().reloadPost();
ALEipManager.getInstance().reloadCompany();
ALEipManager.getInstance().reloadPosition();
// debug
updateFlag(rundata);
} catch (Exception ex) {
Database.rollback();
logger.error("system", ex);
return false;
}
return true;
}
/**
* @param ids
*/
private void updateCabinet(List<Integer> ids) {
SelectQuery<EipTCabinetFolder> query =
Database.query(EipTCabinetFolder.class);
Expression exp1 =
ExpressionFactory.inExp(EipTCabinetFolder.CREATE_USER_ID_PROPERTY, ids);
query.setQualifier(exp1);
List<EipTCabinetFolder> list = query.fetchList();
for (EipTCabinetFolder folder : list) {
Integer folderId = folder.getFolderId();
SelectQuery<EipTCabinetFolder> query1 =
Database.query(EipTCabinetFolder.class);
exp1 =
ExpressionFactory.matchDbExp(
EipTCabinetFolder.FOLDER_ID_PK_COLUMN,
Integer.valueOf(folderId));
Expression exp2 =
ExpressionFactory.matchExp(
EipTCabinetFolder.PARENT_ID_PROPERTY,
Integer.valueOf(folderId));
query1.setQualifier(exp1.orExp(exp2));
List<EipTCabinetFolder> list1 = query1.fetchList();
ArrayList<Integer> folderids = new ArrayList<Integer>();
for (EipTCabinetFolder folder2 : list1) {
folderids.add(folder2.getFolderId());
}
// データベースのフォルダ情報を削除する.
SelectQuery<EipTCabinetFolder> delfolderquery =
Database.query(EipTCabinetFolder.class);
Expression delfolderexp =
ExpressionFactory.inDbExp(
EipTCabinetFolder.FOLDER_ID_PK_COLUMN,
folderids);
delfolderquery.setQualifier(delfolderexp);
List<EipTCabinetFolder> delFolderList = delfolderquery.fetchList();
// フォルダ情報を削除
for (EipTCabinetFolder delfolder : delFolderList) {
List<EipTCabinetFile> cabinetfiles =
CabinetUtils.getEipTCabinetFileList(delfolder
.getFolderId()
.intValue());
if ((cabinetfiles != null) && (cabinetfiles.size() > 0)) {
int tsize = cabinetfiles.size();
for (int k = 0; k < tsize; k++) {
fpaths.add((cabinetfiles.get(k)).getFilePath());
}
}
// フォルダ情報を削除
Database.delete(delfolder);
}
}
}
private void updateFlag(RunData rundata) throws ProfileException {
String portletEntryId = rundata.getParameters().getString("js_peid", null);
String FLAG = "desa";
Profile profile = ((JetspeedRunData) rundata).getProfile();
Portlets portlets = profile.getDocument().getPortlets();
Portlets[] portletList = portlets.getPortletsArray();
PsmlParameter param = null;
Parameter params[] = null;
boolean hasParam = false;
Entry[] entries = portletList[0].getEntriesArray();
Entry entry = null;
int ent_length = entries.length;
for (int j = 0; j < ent_length; j++) {
entry = entries[j];
if (entry.getId().equals(portletEntryId)) {
params = entry.getParameter();
int param_len = params.length;
for (int k = 0; k < param_len; k++) {
if (params[k].getName().equals(FLAG)) {
params[k].setValue("1");
entry.setParameter(k, params[k]);
hasParam = true;
}
}
if (!hasParam) {
param = new PsmlParameter();
param.setName(FLAG);
param.setValue("1");
entries[j].addParameter(param);
}
break;
}
}
profile.store();
}
private void updateBlog(List<Integer> ids) {
SelectQuery<EipTBlogFootmarkMap> blogquery2 =
Database.query(EipTBlogFootmarkMap.class);
Expression blogexp2 =
ExpressionFactory.inExp(EipTBlogFootmarkMap.USER_ID_PROPERTY, ids);
blogquery2.setQualifier(blogexp2);
List<EipTBlogFootmarkMap> bloglist2 = blogquery2.fetchList();
if (bloglist2 != null && bloglist2.size() > 0) {
Database.deleteAll(bloglist2);
}
SelectQuery<EipTBlogFile> blogquery3 = Database.query(EipTBlogFile.class);
Expression blogexp3 =
ExpressionFactory.inExp(EipTBlogFile.OWNER_ID_PROPERTY, ids);
blogquery3.setQualifier(blogexp3);
List<EipTBlogFile> Bloglist3 = blogquery3.fetchList();
if (Bloglist3 != null && Bloglist3.size() > 0) {
for (EipTBlogFile file : Bloglist3) {
fpaths.add(getSaveDirPath(
orgId,
file.getOwnerId().intValue(),
FOLDER_FILEDIR,
"blog")
+ file.getFilePath());
}
}
if (Bloglist3 != null && Bloglist3.size() > 0) {
Database.deleteAll(Bloglist3);
}
SelectQuery<EipTBlogComment> blogquery4 =
Database.query(EipTBlogComment.class);
Expression blogexp4 =
ExpressionFactory.inExp(EipTBlogComment.OWNER_ID_PROPERTY, ids);
blogquery4.setQualifier(blogexp4);
List<EipTBlogComment> bloglist4 = blogquery4.fetchList();
if (bloglist4 != null && bloglist4.size() > 0) {
Database.deleteAll(bloglist4);
}
List<EipTBlogThema> deleteThemeList = new ArrayList<EipTBlogThema>();
SelectQuery<EipTBlogEntry> Blogquery5 = Database.query(EipTBlogEntry.class);
Expression blogexp5 =
ExpressionFactory.inExp(EipTBlogEntry.OWNER_ID_PROPERTY, ids);
Blogquery5.setQualifier(blogexp5);
List<EipTBlogEntry> bloglist5 = Blogquery5.fetchList();
if (bloglist5 != null && bloglist5.size() > 0) {
for (EipTBlogEntry entry : bloglist5) {
EipTBlogThema theme = entry.getEipTBlogThema();
if (!theme.getThemaId().equals(1)) {
deleteThemeList.add(theme);
}
}
Database.deleteAll(bloglist5);
if (deleteThemeList.size() > 0) {
List<Integer> themeIds = new ArrayList<Integer>();
for (EipTBlogThema theme : deleteThemeList) {
themeIds.add(theme.getThemaId());
}
Expression themaExp =
ExpressionFactory.inExp(
EipTBlogEntry.EIP_TBLOG_THEMA_PROPERTY,
themeIds);
Query<EipTBlogEntry> themaQuery =
Database.query(EipTBlogEntry.class, themaExp);
List<EipTBlogEntry> themaEntry = themaQuery.fetchList();
EipTBlogThema defaultThema = BlogUtils.getEipTBlogThema(1L);
for (EipTBlogEntry entry : themaEntry) {
entry.setEipTBlogThema(defaultThema);
}
Database.deleteAll(deleteThemeList);
}
}
SelectQuery<EipTBlog> blogquery6 = Database.query(EipTBlog.class);
Expression blogexp6 =
ExpressionFactory.inExp(EipTBlog.OWNER_ID_PROPERTY, ids);
blogquery6.setQualifier(blogexp6);
List<EipTBlog> bloglist6 = blogquery6.fetchList();
if (bloglist6 != null && bloglist6.size() > 0) {
Database.deleteAll(bloglist6);
}
}
private void updateAddressbook(List<Integer> ids) {
SelectQuery<EipMAddressbookCompany> addressquery1 =
Database.query(EipMAddressbookCompany.class);
Expression addressexp1 =
ExpressionFactory.inExp(
EipMAddressbookCompany.CREATE_USER_ID_PROPERTY,
ids);
addressquery1.setQualifier(addressexp1);
List<EipMAddressbookCompany> addresslist1 = addressquery1.fetchList();
if (addresslist1 != null && addresslist1.size() > 0) {
Database.deleteAll(addresslist1);
}
SelectQuery<EipMAddressbook> addressquery2 =
Database.query(EipMAddressbook.class);
Expression addressexp2 =
ExpressionFactory.inExp(EipMAddressbook.OWNER_ID_PROPERTY, ids);
addressquery2.setQualifier(addressexp2);
List<EipMAddressbook> addresslist2 = addressquery2.fetchList();
if (addresslist2 != null && addresslist2.size() > 0) {
Database.deleteAll(addresslist2);
}
}
private void updateMailaccount(List<Integer> ids) {
SelectQuery<EipMMailAccount> mailquery1 =
Database.query(EipMMailAccount.class);
Expression mailexp1 =
ExpressionFactory.inExp(EipMMailAccount.USER_ID_PROPERTY, ids);
mailquery1.setQualifier(mailexp1);
List<EipMMailAccount> maillist1 = mailquery1.fetchList();
if (maillist1 != null && maillist1.size() > 0) {
Database.deleteAll(maillist1);
}
}
private void updateMail(List<Integer> ids) {
SelectQuery<EipTMail> mailquery1 = Database.query(EipTMail.class);
Expression mailexp1 =
ExpressionFactory.inExp(EipTMail.USER_ID_PROPERTY, ids);
mailquery1.setQualifier(mailexp1);
List<EipTMail> maillist1 = mailquery1.fetchList();
if (maillist1 != null && maillist1.size() > 0) {
Database.deleteAll(maillist1);
}
}
private void updateMemo(List<Integer> ids) {
SelectQuery<EipTMemo> memoquery1 = Database.query(EipTMemo.class);
Expression memoexp1 =
ExpressionFactory.inExp(EipTMemo.OWNER_ID_PROPERTY, ids);
memoquery1.setQualifier(memoexp1);
List<EipTMemo> memolist1 = memoquery1.fetchList();
if (memolist1 != null && memolist1.size() > 0) {
Database.deleteAll(memolist1);
}
}
private void updateMsgboard(List<Integer> ids) {
Expression fileExp =
ExpressionFactory.inExp(EipTMsgboardFile.OWNER_ID_PROPERTY, ids);
SelectQuery<EipTMsgboardFile> fileQuery =
Database.query(EipTMsgboardFile.class, fileExp);
List<EipTMsgboardFile> fileList = fileQuery.fetchList();
if (fileList != null && fileList.size() > 0) {
for (EipTMsgboardFile file : fileList) {
fpaths.add(getSaveDirPath(
orgId,
file.getOwnerId().intValue(),
FOLDER_FILEDIR,
"msgboard")
+ file.getFilePath());
}
Database.deleteAll(fileList);
}
Expression topicExp =
ExpressionFactory.inExp(EipTMsgboardTopic.OWNER_ID_PROPERTY, ids);
SelectQuery<EipTMsgboardTopic> topicQuery =
Database.query(EipTMsgboardTopic.class, topicExp);
List<EipTMsgboardTopic> topicList = topicQuery.fetchList();
if (topicList != null && topicList.size() > 0) {
Database.deleteAll(topicList);
}
Expression defaultCategoryExp =
ExpressionFactory.matchDbExp(
EipTMsgboardCategory.CATEGORY_ID_PK_COLUMN,
Integer.valueOf(1));
SelectQuery<EipTMsgboardCategory> defaultCategoryQuery =
Database.query(EipTMsgboardCategory.class, defaultCategoryExp);
EipTMsgboardCategory defaultCategory = defaultCategoryQuery.fetchSingle();
SelectQuery<EipTMsgboardCategory> categoryQuery =
Database.query(EipTMsgboardCategory.class);
List<EipTMsgboardCategory> categoryList = categoryQuery.fetchList();
List<Integer> categoryIdList = new ArrayList<Integer>();
List<EipTMsgboardCategory> deleteCategoryList =
new ArrayList<EipTMsgboardCategory>();
if (categoryList != null && categoryList.size() > 0) {
for (EipTMsgboardCategory category : categoryList) {
if (ids.contains(category.getTurbineUser().getUserId())) {
if (!categoryIdList.contains(category.getCategoryId())) {
categoryIdList.add(category.getCategoryId());
deleteCategoryList.add(category);
}
}
}
}
if (categoryIdList.size() > 0) {
Expression deletedCategoryTopicExp =
ExpressionFactory.inExp(
EipTMsgboardTopic.EIP_TMSGBOARD_CATEGORY_PROPERTY,
categoryIdList);
SelectQuery<EipTMsgboardTopic> deletedCategoryTopicQuery =
Database.query(EipTMsgboardTopic.class, deletedCategoryTopicExp);
List<EipTMsgboardTopic> deletedCategoryTopicList =
deletedCategoryTopicQuery.fetchList();
for (EipTMsgboardTopic topic : deletedCategoryTopicList) {
topic.setEipTMsgboardCategory(defaultCategory);
}
Database.deleteAll(deleteCategoryList);
}
}
private void updateNote(List<Integer> ids) {
SelectQuery<EipTNote> notequery1 = Database.query(EipTNote.class);
Expression noteexp1 =
ExpressionFactory.inExp(EipTNote.OWNER_ID_PROPERTY, ids);
notequery1.setQualifier(noteexp1);
List<EipTNote> notelist1 = notequery1.fetchList();
if (notelist1 != null && notelist1.size() > 0) {
Database.deleteAll(notelist1);
}
SelectQuery<EipTNoteMap> notequery2 = Database.query(EipTNoteMap.class);
Expression noteexp2 =
ExpressionFactory.inExp(EipTNoteMap.USER_ID_PROPERTY, ids);
notequery2.setQualifier(noteexp2);
List<EipTNoteMap> notelist2 = notequery2.fetchList();
if (notelist2 != null && notelist2.size() > 0) {
Database.deleteAll(notelist2);
}
}
private void updateTimecard(List<Integer> ids) {
SelectQuery<EipTTimecard> timecardquery1 =
Database.query(EipTTimecard.class);
Expression timecardexp1 =
ExpressionFactory.inExp(EipTTimecard.USER_ID_PROPERTY, ids);
timecardquery1.setQualifier(timecardexp1);
List<EipTTimecard> timecardlist1 = timecardquery1.fetchList();
if (timecardlist1 != null && timecardlist1.size() > 0) {
Database.deleteAll(timecardlist1);
}
}
private void updateTimeline(List<Integer> ids) {
SelectQuery<EipTTimeline> timelineQuery1 =
Database.query(EipTTimeline.class);
Expression timelineExp1 =
ExpressionFactory.inExp(EipTTimeline.OWNER_ID_PROPERTY, ids);
timelineQuery1.setQualifier(timelineExp1);
List<EipTTimeline> timelineList1 = timelineQuery1.fetchList();
List<Integer> timelineIds = new ArrayList<Integer>();
if (timelineList1 != null && timelineList1.size() > 0) {
for (EipTTimeline tmp : timelineList1) {
timelineIds.add(tmp.getTimelineId());
}
SelectQuery<EipTTimeline> timelineQuery2 =
Database.query(EipTTimeline.class);
Expression timelineExp2 =
ExpressionFactory.inDbExp(EipTTimeline.PARENT_ID_COLUMN, timelineIds);
timelineQuery2.setQualifier(timelineExp2);
List<EipTTimeline> timelineList2 = timelineQuery2.fetchList();
for (EipTTimeline tmp : timelineList2) {
timelineIds.add(tmp.getTimelineId());
}
timelineList1.addAll(timelineList2);
if (timelineList1.size() > 0) {
SelectQuery<EipTTimelineFile> timelineFileQuery1 =
Database.query(EipTTimelineFile.class);
Expression timelineFileExp1 =
ExpressionFactory.inExp(EipTTimelineFile.OWNER_ID_PROPERTY, ids);
timelineFileQuery1.setQualifier(timelineFileExp1);
List<EipTTimelineFile> timelineFileList1 =
timelineFileQuery1.fetchList();
if (timelineFileList1 != null && timelineFileList1.size() > 0) {
Database.deleteAll(timelineFileList1);
}
SelectQuery<EipTTimelineMap> timelineMapQuery1 =
Database.query(EipTTimelineMap.class);
Expression timelineMapExp1 =
ExpressionFactory.inExp(EipTTimelineMap.EIP_TTIMELINE_PROPERTY, ids);
timelineMapQuery1.setQualifier(timelineMapExp1);
List<EipTTimelineMap> timelineMapList1 = timelineMapQuery1.fetchList();
if (timelineMapList1 != null && timelineMapList1.size() > 0) {
Database.deleteAll(timelineMapList1);
}
SelectQuery<EipTTimelineUrl> timelineUrlQuery1 =
Database.query(EipTTimelineUrl.class);
Expression timelineUrlExp1 =
ExpressionFactory.inExp(
EipTTimelineUrl.TIMELINE_ID_PROPERTY,
timelineIds);
timelineUrlQuery1.setQualifier(timelineUrlExp1);
List<EipTTimelineUrl> timelineUrlList1 = timelineUrlQuery1.fetchList();
if (timelineUrlList1 != null && timelineUrlList1.size() > 0) {
Database.deleteAll(timelineUrlList1);
}
SelectQuery<EipTTimelineLike> timelineLikeQuery1 =
Database.query(EipTTimelineLike.class);
Expression timelineLikeExp1 =
ExpressionFactory.inDbExp(EipTTimelineLike.OWNER_ID_COLUMN, ids);
Expression timelineLikeExp2 =
ExpressionFactory.inDbExp(
EipTTimelineLike.TIMELINE_ID_COLUMN,
timelineIds);
timelineLikeQuery1.setQualifier(timelineLikeExp1
.orExp(timelineLikeExp2));
List<EipTTimelineLike> timelineLikeList1 =
timelineLikeQuery1.fetchList();
if (timelineLikeList1 != null && timelineLikeList1.size() > 0) {
Database.deleteAll(timelineLikeList1);
}
Database.deleteAll(timelineList1);
}
}
}
private void updateTodo(List<Integer> ids) {
SelectQuery<EipTTodoCategory> todoquery1 =
Database.query(EipTTodoCategory.class);
Expression todoexp1 =
ExpressionFactory.inExp(EipTTodoCategory.USER_ID_PROPERTY, ids);
todoquery1.setQualifier(todoexp1);
List<EipTTodoCategory> todolist1 = todoquery1.fetchList();
if (todolist1 != null && todolist1.size() > 0) {
Database.deleteAll(todolist1);
}
SelectQuery<EipTTodo> todoquery2 = Database.query(EipTTodo.class);
Expression todoexp2 =
ExpressionFactory.inExp(EipTTodo.USER_ID_PROPERTY, ids);
todoquery2.setQualifier(todoexp2);
List<EipTTodo> todolist2 = todoquery2.fetchList();
if (todolist2 != null && todolist2.size() > 0) {
Database.deleteAll(todolist2);
}
}
@SuppressWarnings("unchecked")
private void updateSchedule(List<Integer> ids) {
List<Integer> deleteFacilityId = new ArrayList<Integer>();
SelectQuery<EipTSchedule> schedulequery1 =
Database.query(EipTSchedule.class);
Expression scheduleexp1 =
ExpressionFactory.inExp(EipTSchedule.OWNER_ID_PROPERTY, ids);
schedulequery1.setQualifier(scheduleexp1);
List<EipTSchedule> schedulelist1 = schedulequery1.fetchList();
if (schedulelist1 != null && schedulelist1.size() > 0) {
Database.deleteAll(schedulelist1);
}
SelectQuery<EipTScheduleMap> schedulequery2 =
Database.query(EipTScheduleMap.class);
Expression scheduleexp2 =
ExpressionFactory.inExp(EipTScheduleMap.USER_ID_PROPERTY, ids);
schedulequery2.setQualifier(scheduleexp2);
List<EipTScheduleMap> schedulelist2 = schedulequery2.fetchList();
if (schedulelist2 != null && schedulelist2.size() > 0) {
for (EipTScheduleMap map : schedulelist2) {
List<EipTScheduleMap> maps =
map.getEipTSchedule().getEipTScheduleMaps();
for (EipTScheduleMap map2 : maps) {
if (map2.getType().equals("F")) {
deleteFacilityId.add(map2.getUserId());
}
}
// 共有カテゴリの削除
EipTCommonCategory commonCat = map.getEipTCommonCategory();
if (!commonCat.getCommonCategoryId().equals(1)) {
CommonCategoryUtils.setDefaultCommonCategoryToSchedule(commonCat);
Database.delete(commonCat);
}
}
Database.deleteAll(schedulelist2);
// 設備の削除
if (deleteFacilityId.size() > 0) {
Expression fexp =
ExpressionFactory.inDbExp(
EipMFacility.FACILITY_ID_PK_COLUMN,
deleteFacilityId);
SelectQuery<EipMFacility> query =
Database.query(EipMFacility.class, fexp);
List<EipMFacility> flist = query.fetchList();
if (flist.size() > 0) {
SelectQuery<EipTScheduleMap> query1 =
Database.query(EipTScheduleMap.class);
Expression exp1 =
ExpressionFactory.inExp(
EipTScheduleMap.USER_ID_PROPERTY,
deleteFacilityId);
Expression exp2 =
ExpressionFactory.matchExp(EipTScheduleMap.TYPE_PROPERTY, "F");
query1.setQualifier(exp1.andExp(exp2));
query1.deleteAll();
Database.deleteAll(flist);
}
}
}
}
private void updateWorkflow(List<Integer> ids) {
SelectQuery<EipTWorkflowRequestMap> workquery1 =
Database.query(EipTWorkflowRequestMap.class);
Expression workexp1 =
ExpressionFactory.inExp(EipTWorkflowRequestMap.USER_ID_PROPERTY, ids);
workquery1.setQualifier(workexp1);
List<EipTWorkflowRequestMap> worklist1 = workquery1.fetchList();
if (worklist1 != null && worklist1.size() > 0) {
Database.deleteAll(worklist1);
}
SelectQuery<EipTWorkflowRequest> workquery2 =
Database.query(EipTWorkflowRequest.class);
Expression workexp2 =
ExpressionFactory.inExp(EipTWorkflowRequest.USER_ID_PROPERTY, ids);
workquery2.setQualifier(workexp2);
List<EipTWorkflowRequest> worklist2 = workquery2.fetchList();
if (worklist2 != null && worklist2.size() > 0) {
Database.deleteAll(worklist2);
}
}
private void deleteFiles(List<String> fpaths) {
if (fpaths == null) {
return;
}
if (fpaths.size() > 0) {
// ローカルファイルに保存されているファイルを削除する.
File file = null;
for (String path : fpaths) {
file = new File(path);
if (file.exists()) {
deleteFolder(file);
}
}
}
}
protected boolean deleteFolder(File parent_folder) {
boolean flag = true;
try {
if (!parent_folder.exists()) {
return false;
}
if (parent_folder.isFile()) {
if (!parent_folder.delete()) {
flag = false;
}
}
String folders_path[] = parent_folder.list();
if (folders_path.length == 0) {
return true;
}
int length = folders_path.length;
for (int i = 0; i < length; i++) {
File folder =
new File(parent_folder.getAbsolutePath()
+ File.separator
+ folders_path[i]);
if (folder.isDirectory()) {
if (!deleteFolder(folder)) {// フォルダの中身が空もしくは全部削除された場合
flag = false;
} else if (!folder.delete()) {
flag = false;
}
} else {
// 一つでも消えないファイルがあればフラグを動かす
if (!folder.delete()) {
flag = false;
}
}
}
} catch (Exception e) {
logger.error("[SystemDeleteSampleFormData]", e);
return false;
}
return flag;
}
/**
* ユーザ毎のルート保存先(絶対パス)を取得します。
*
* @param uid
* @return
*/
public static String getSaveDirPath(String orgId, int uid, String filter,
String type) {
if (uid > 0) {
return filter
+ File.separator
+ orgId
+ File.separator
+ type
+ File.separator
+ Integer.toString(uid);
} else {
return filter + File.separator + orgId + File.separator + type;
}
}
private void updateUserhidden(List<Integer> ids)
throws JetspeedSecurityException {
List<EipMPost> delpost = new ArrayList<EipMPost>();
List<Integer> delpositionId = new ArrayList<Integer>();
Expression gexp =
ExpressionFactory.inDbExp(TurbineUser.USER_ID_PK_COLUMN, ids);
SelectQuery<TurbineUserGroupRole> gquery =
Database.query(TurbineUserGroupRole.class, gexp);
List<TurbineUserGroupRole> map = gquery.fetchList();
if (map != null && map.size() > 0) {
for (TurbineUserGroupRole tugr : map) {
EipMPost post = tugr.getTurbineGroup().getEipMPost();
if (post != null && !delpost.contains(post)) {
delpost.add(post);
}
}
Database.deleteAll(map);
if (delpost.size() > 0) {
for (EipMPost post : delpost) {
// グループからユーザーを削除
List<ALEipUser> users = ALEipUtils.getUsers(post.getGroupName());
for (ALEipUser user : users) {
JetspeedSecurity.unjoinGroup(user.getName().getValue(), post
.getGroupName());
}
JetspeedSecurity.removeGroup(post.getGroupName());
}
Database.deleteAll(delpost);
}
}
SelectQuery<TurbineUser> tquery = Database.query(TurbineUser.class);
Expression texp =
ExpressionFactory.inDbExp(TurbineUser.USER_ID_PK_COLUMN, ids);
tquery.setQualifier(texp);
List<TurbineUser> tusers = tquery.fetchList();
if (tusers != null && tusers.size() > 0) {
Integer positionId;
for (TurbineUser tuser : tusers) {
tuser.setDisabled("T");
positionId = tuser.getPositionId();
if (positionId != null && positionId > 0) {
delpositionId.add(positionId);
}
}
Database.commit();
}
// 役職削除
if (delpositionId.size() > 0) {
Expression exp =
ExpressionFactory.inDbExp(
EipMPosition.POSITION_ID_PK_COLUMN,
delpositionId);
SelectQuery<EipMPosition> postQuery =
new SelectQuery<EipMPosition>(EipMPosition.class, exp);
List<EipMPosition> list = postQuery.fetchList();
if (list.size() > 0) {
for (EipMPosition record : list) {
// 役職IDを取得
int positionId = record.getPositionId();
// 役職を削除
Database.delete(record);
// この役職に設定されているユーザーの役職IDを0とする
String sql =
"UPDATE turbine_user set POSITION_ID = 0 where POSITION_ID = "
+ positionId;
Database.sql(TurbineUser.class, sql).execute();
}
}
}
}
}