/* * 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.news; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.SocketException; import java.net.URL; import java.net.UnknownHostException; 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.resources.JetspeedResources; import org.apache.turbine.util.RunData; import org.apache.velocity.context.Context; import com.aimluck.commons.field.ALStringField; import com.aimluck.commons.utils.ALStringUtil; import com.aimluck.eip.cayenne.om.account.AipoLicense; import com.aimluck.eip.cayenne.om.security.TurbineUser; import com.aimluck.eip.common.ALAbstractFormData; import com.aimluck.eip.common.ALDBErrorException; import com.aimluck.eip.common.ALEipConstants; import com.aimluck.eip.common.ALPageNotFoundException; import com.aimluck.eip.license.util.LicenseUtils; import com.aimluck.eip.orm.Database; import com.aimluck.eip.orm.query.SelectQuery; public class NewsFormData extends ALAbstractFormData { /** logger */ private static final JetspeedLogger logger = JetspeedLogFactoryService .getLogger(NewsFormData.class.getName()); private ALStringField company_name; private ALStringField post_name; private ALStringField customer_name; private ALStringField email; private ALStringField email_confirm; private ALStringField content; private String aipo_version; private String latest_version; @Override public void initField() { company_name = new ALStringField(); company_name.setFieldName("御社名"); post_name = new ALStringField(); post_name.setFieldName("部署名"); customer_name = new ALStringField(); customer_name.setFieldName("ご担当者名"); email = new ALStringField(); email.setFieldName("メールアドレス"); email_confirm = new ALStringField(); email_confirm.setFieldName("メールアドレス(確認用)"); content = new ALStringField(); content.setFieldName("お問い合わせ内容"); aipo_version = ""; latest_version = ""; equalsVersion(); } @Override protected void setValidator() { company_name.limitMaxLength(200); post_name.limitMaxLength(200); customer_name.setNotNull(true); customer_name.limitMaxLength(200); email.setNotNull(true); email.setCharacterType(ALStringField.TYPE_ASCII); email.limitMaxLength(200); email_confirm.setNotNull(true); email_confirm.setCharacterType(ALStringField.TYPE_ASCII); email_confirm.limitMaxLength(200); content.setNotNull(true); content.limitMaxLength(400); } @Override protected boolean validate(List<String> msgList) { if (!company_name.validate(msgList)) { company_name.setValue(null); } if (!post_name.validate(msgList)) { post_name.setValue(null); } if (!customer_name.validate(msgList)) { customer_name.setValue(null); } if (!email.validate(msgList)) { email.setValue(null); } if (!email_confirm.validate(msgList)) { email_confirm.setValue(null); } if (!content.validate(msgList)) { content.setValue(null); } if (!email.toString().equals(email_confirm.toString())) { msgList .add("『 <span class='em'>メールアドレス</span> 』と『 <span class='em'>メールアドレス(確認用)</span> 』には同じものを入力してください。"); email.setValue(null); email_confirm.setValue(null); } else if (!ALStringUtil.isCellPhoneMailAddress(email.toString())) { msgList.add("『 <span class='em'>メールアドレス</span> 』を正しく入力してください。"); } return (msgList.size() == 0); } @Override protected boolean setFormData(RunData rundata, Context context, List<String> msgList) throws ALPageNotFoundException, ALDBErrorException { boolean res = super.setFormData(rundata, context, msgList); return res; } @Override protected boolean insertFormData(RunData rundata, Context context, List<String> msglist) { return false; } private void equalsVersion() { String line = ""; try { String url_str = JetspeedResources.getString("aipo.version_url", ""); latest_version = aipo_version = JetspeedResources.getString("aipo.version", ""); URL url = new URL(url_str); InputStream is = url.openStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader bur = new BufferedReader(isr); if ((line = bur.readLine()) != null) { latest_version = line; } bur.close(); isr.close(); is.close(); } catch (MalformedURLException e) { logger.error("[NewsFormData]", e); } catch (UnknownHostException e) { logger.error("[NewsFormData]", e); } catch (SocketException e) { logger.error("[NewsFormData]", e); } catch (IOException e) { logger.error("[NewsFormData]", e); } } public void getLicense(RunData rundata, Context context) { // ライセンス AipoLicense al = LicenseUtils.getAipoLicense(rundata, context); if (al != null) { context.put("Key", al.getLicense()); } // ユーザ数 SelectQuery<TurbineUser> query = Database.query(TurbineUser.class); Expression exp = ExpressionFactory.matchExp(TurbineUser.DISABLED_PROPERTY, "F"); query.setQualifier(exp); List<TurbineUser> list = query.fetchList(); context.put("UserNum", (String.valueOf(list.size() - 2))); } @Override protected boolean updateFormData(RunData rundata, Context context, List<String> msgList) { return false; } @Override protected boolean loadFormData(RunData rundata, Context context, List<String> msgList) { return false; } @Override protected boolean deleteFormData(RunData rundata, Context context, List<String> msgList) { return false; } public ALStringField getCompanyName() { return company_name; } public ALStringField getPostName() { return post_name; } public ALStringField getCustomerName() { return customer_name; } public ALStringField getEmail() { return email; } public ALStringField getEmailConfirm() { return email_confirm; } public ALStringField getContent() { return content; } public String getAipoVersion() { return aipo_version; } public String getLatestVersion() { return latest_version; } public Object getNewsHTML() { HttpURLConnection conn = null; BufferedReader reader = null; String body = null; try { String news_url = JetspeedResources.getString("aipo.news_url", ""); URL url = new URL(news_url); conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); reader = new BufferedReader(new InputStreamReader( conn.getInputStream(), ALEipConstants.DEF_CONTENT_ENCODING)); StringBuffer sb = new StringBuffer(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line).append("\r\n"); } body = sb.toString(); } catch (Exception ex) { logger.error("news", ex); body = ""; } finally { try { reader.close(); conn.disconnect(); } catch (Exception e) { logger.error("news", e); return ""; } } return body; } }