/*
* 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.util;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Date;
import javax.servlet.ServletContext;
import org.apache.commons.io.IOUtils;
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 com.aimluck.eip.cayenne.om.portlet.EipTTimeline;
import com.aimluck.eip.cayenne.om.portlet.EipTTimelineFile;
import com.aimluck.eip.orm.Database;
import com.aimluck.eip.services.storage.ALStorageService;
/**
* タイムラインへの自動投稿を処理するクラスです。
*/
public class ALTimelineUtils {
/** logger */
private static final JetspeedLogger logger = JetspeedLogFactoryService
.getLogger(ALTimelineUtils.class.getName());
public static boolean hasTimelinePost() {
return Database.query(EipTTimeline.class).getCount() > 0;
}
public static void postTimeline(JetspeedRunData data, int uid) {
Date now = new Date();
EipTTimeline timeline = Database.create(EipTTimeline.class);
timeline.setParentId(0);
timeline.setOwnerId(uid);
timeline.setExternalId(null);
timeline.setNote(ALLocalizationUtils.getl10n("TIMELINE_GUIDE_MESSAGE"));
timeline.setTimelineType("T");
timeline.setParams(null);
timeline.setCreateDate(now);
timeline.setUpdateDate(now);
Database.commit();
try {
uploadTimelineImage(
data.getServletContext(),
uid,
0,
ALLocalizationUtils.getl10n("TIMELINE_GUIDE_IMAGE_1"),
"/images/first/guide01.png",
"/images/first/guide01s.jpg",
timeline);
uploadTimelineImage(
data.getServletContext(),
uid,
1,
ALLocalizationUtils.getl10n("TIMELINE_GUIDE_IMAGE_2"),
"/images/first/guide02.png",
"/images/first/guide02s.jpg",
timeline);
uploadTimelineImage(
data.getServletContext(),
uid,
2,
ALLocalizationUtils.getl10n("TIMELINE_GUIDE_IMAGE_3"),
"/images/first/guide03.png",
"/images/first/guide03s.jpg",
timeline);
} catch (FileNotFoundException e) {
logger.error("ALTimelineUtils", e);
} catch (IOException e) {
logger.error("ALTimelineUtils", e);
}
}
private static void uploadTimelineImage(ServletContext servletContext,
int uid, int index, String title, String filePath, String sFilePath,
EipTTimeline timeline) throws FileNotFoundException, IOException {
Date now = new Date();
String filename = index + "_" + String.valueOf(System.nanoTime());
File tmpFile = new File(servletContext.getRealPath(sFilePath));
byte[] imageInBytes = IOUtils.toByteArray(new FileInputStream(tmpFile));
EipTTimelineFile file = Database.create(EipTTimelineFile.class);
file.setOwnerId(uid);
file.setFileName(title);
file.setFilePath(getRelativePath(filename));
file.setFileThumbnail(imageInBytes);
file.setEipTTimeline(timeline);
file.setCreateDate(now);
file.setUpdateDate(now);
Database.commit();
tmpFile = new File(servletContext.getRealPath(filePath));
imageInBytes = IOUtils.toByteArray(new FileInputStream(tmpFile));
ALStorageService.createNewFile(
new ByteArrayInputStream(imageInBytes),
JetspeedResources.getString("aipo.filedir", "")
+ ALStorageService.separator()
+ Database.getDomainName()
+ ALStorageService.separator()
+ JetspeedResources.getString("aipo.timeline.categorykey", "")
+ ALStorageService.separator()
+ uid
+ ALStorageService.separator()
+ filename);
}
private static String getRelativePath(String fileName) {
return new StringBuffer().append("/").append(fileName).toString();
}
}