package carpool.configurations;
import java.text.SimpleDateFormat;
import java.util.AbstractMap;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map.Entry;
import carpool.common.DateUtility;
import carpool.common.DebugLog;
import carpool.configurations.EnumConfig.DayTimeSlot;
import carpool.configurations.EnumConfig.EmailEvent;
import carpool.configurations.EnumConfig.MessageType;
import carpool.model.Location;
import carpool.model.representation.SearchRepresentation;
public class CarpoolConfig {
private static final String ENV_VAR_KEY = "C_MAINSERVER_ENV";
private static final String ENV_REMOTE = "REMOTE";
public static final boolean isOnLocal;
//used for emails, Entry consists of subject and template
public static final HashMap<EmailEvent, Entry<String, String>> emailEventMap;
public static final String htmlTemplateURLTarget = "URLTARGET";
public static final String htmlTemplateNameTarget = "NAMETARGET";
static{
String value = System.getenv(ENV_VAR_KEY);
if (value != null && value.equals(ENV_REMOTE)){
isOnLocal = false;
} else{
isOnLocal = true;
}
emailEventMap = new HashMap<EmailEvent, Entry<String, String>>();
//请激活您的账户 请激活您的账户
emailEventMap.put(EmailEvent.activeateAccount, new AbstractMap.SimpleEntry<String, String>("请激活您的账户","<!DOCTYPE html><html><head><meta charset='utf-8' /><meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'><meta name='HandheldFriendly' content='true'><title>routea.ca</title></head><body style='margin-bottom: 0px; margin-top: 0px; padding-bottom: 0px; padding-top: 0px;'><div style=' width:600px; font-size:12px; padding:0; margin:0 auto; font-family:Arial, '宋体'; overflow:hidden'><div style='border:1px solid #eee; verflow:hidden'><div style=' width:598px; height: 71px;border-bottom:2px solid #f5800a; padding:10px; padding-left:20px'><a href='http://routea.ca' target='_blank'><img src='https://routea.ca/emailImages/logo_email.jpg' border='0' alt='低碳生活,优质拼车'></a></div><div style='padding:30px 20px; font-size:14px; color:#000; line-height:24px'><p style='padding-bottom:10px'>感谢您注册RouteA,请点击下面的链接完成注册(如无法打开请把此链接复制粘贴到浏览器打开)。</p><p style='padding-bottom:10px'><a style='color:#0000cc' href='URLTARGET' target='_blank'>URLTARGET</a></p>RouteA邮件中心 <br></div><div style='padding:10px 20px; line-height:24px; color:#666; border-top:1px solid #eee; overflow:hidden'>① 此邮件为routea.ca系统发出,请勿回复邮件<br>② 如果您有任何问题,可以随时 <a style='color:#0000cc' href='http://routea.ca' target='_blank'>与RouteA对话</a></div></div><div style='background:#f7f7f7; height:3px; margin:0 3px; overflow:hidden;'></div></div></body></html>"));
//取回您的密码 取回您的密码
emailEventMap.put(EmailEvent.forgotPassword, new AbstractMap.SimpleEntry<String, String>("取回您的密码","<!DOCTYPE html><html><head><meta charset='utf-8' /><meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'><meta name='HandheldFriendly' content='true'><title>routea.ca</title></head><body style='margin-bottom: 0px; margin-top: 0px; padding-bottom: 0px; padding-top: 0px;'><div style=' width:600px; font-size:12px; padding:0; margin:0 auto; font-family:Arial, '宋体'; overflow:hidden'><div style='border:1px solid #eee; verflow:hidden'><div style=' width:598px; height: 71px;border-bottom:2px solid #f5800a; padding:10px; padding-left:20px'><a href='http://routea.ca' target='_blank'><img src='https://routea.ca/emailImages/logo_email.jpg' border='0' alt='低碳生活,优质拼车'></a></div><div style='padding:30px 20px; font-size:14px; color:#000; line-height:24px'><p style='padding-bottom:10px'>尊敬的RouteA用户:</p><p style='padding-bottom:10px'>请点击以下链接完成重置密码(如无法打开请把此链接复制粘贴到浏览器打开)</p><p style='padding-bottom:10px'><a style='color:#0000cc' href='URLTARGET' target='_blank'>URLTARGET</a></p>RouteA邮件中心<br></div><div style='padding:10px 20px; line-height:24px; color:#666; border-top:1px solid #eee; overflow:hidden'>① 此邮件为routea.ca系统发出,请勿回复邮件<br>② 如果您有任何问题,可以随时 <a style='color:#0000cc' href='http://routea.ca' target='_blank'>与RouteA对话</a></div></div><div style='background:#f7f7f7; height:3px; margin:0 3px; overflow:hidden;'></div></div></body></html>"));
//最新动态提示 最新动态提示
emailEventMap.put(EmailEvent.notification, new AbstractMap.SimpleEntry<String, String>("最新动态提示","TARGET"));
}
public static final int max_recents = 10;
public static final long max_feedBackLength = 200000l;
public static final long max_PostLength = 819200l;
public static final long max_FileLength = 81920000l;
//redis related
public static final String key_emailActivationAuth = "ea";
public static final String key_forgetPasswordAuth = "fp";
public static final String redisSeperator = "+";
public static final String redisSeperatorRegex = "\\+";
public static final long session_updateThreshold = 259200000l; //3 days
public static final long session_expireThreshold = 604800000l; //7 days
public static final long emailActivation_expireThreshold = 604800000l; //7 days
public static final long forgetPassword_expireThreshold = 604800000l; //7 days
public static final int session_sequenceLength = 15;
public static final int emailActivation_sequenceLength = 15;
public static final int forgetPassword_sequenceLength = 30;
public static final String redisSearchHistoryPrefix = "usrSRH";;
public static final int redisSearchHistoryUpbound = isOnLocal ? 6 : 50;
public static final String domainName = isOnLocal ? "localhost:8015" : "www.routea.ca";
public static final String sqlPass = isOnLocal ? "" : "badstudent";
public static final boolean cookieEnabled = false;
public static final String cookie_userSession = "userSessionCookie";
public static final int cookie_maxAge = 5184000; //2 month
public static final String urlSeperator = "+";
public static final String urlSeperatorRegx = "\\+";
public static final String pathToSearchHistoryFolder = "srHistory/";
public static final String searchHistoryFileSufix = "_sr.txt";
//image
public static final String profileImgPrefix = "userprofile-";
public static final String imgSize_xs = "xs-8-";
public static final String imgSize_s = "s-16-";
public static final String imgSize_m = "m-32-";
public static final String imgSize_l = "l-64-";
public static final String imgSize_xl = "xl-128-";
public static final String img_default_avatar_male = "res/personal/default-avatar-male.png";
public static final String img_default_avatar_female = "res/personal/default-avatar-female.png";
//log
public static final String log4jBasicPatternLayout = "%d [%t] %-5p %c - %m%n";
public static final String log4LogFileFolder = "log4j/";
public static final String log4jLogFileSuffix = ".info.log";
public static final String debugLogChinesePrefix = "_chinese";
/*database configurations*/
public static final String UserSRDeparture = "UserSRDeparture";
public static final String UserSRArrival = "UserSRArrival";
public static final String DatabasesDeparture = "DatabasesDeparture";
public static final String DatabasesArrival = "DatabasesArrival";
public static final String RDSDBInstanceUri = "badstudent.cunzg2tyzsud.us-west-2.rds.amazonaws.com";
public static final String RedisEndPoint = "redisserver.ppomgu.0001.usw2.cache.amazonaws.com";
public static final String localhostUri = "localhost";
public static final String jdbcUri = isOnLocal ? localhostUri : RDSDBInstanceUri;
public static final String redisUri = isOnLocal ? localhostUri : RedisEndPoint;
public static final String AccessKeyID="AKIAIE53WCAFSYLUGH2A";
public static final String SecretKey="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";
//email
public static final String SMTP_USERNAME = "AKIAIK5KV62M7VTBOJDQ";
public static final String SMTP_PASSWORD = "AklHWYPbI4LBZcQZB3BDqj9KQgl20FyUZj296ru6aRD+";
public static final String SMTP_FROM = "info@routea.ca";
public static final String SMTP_HOST = "email-smtp.us-east-1.amazonaws.com";
public static final int SMTP_PORT = 587;
/*API level constants*/
public static final int category_DM = 0;
public static final String applicationPrefix = "/api";
public static final String versionPrefix = "/v1.0";
public static final int maxEmailLength = 50;
public static final int maxUserNameLength = 18;
public static final int minPasswordLength = 6;
public static final int maxPasswordLength = 30;
public static final String log_errKeyword = "ERROR!:";
public static final String RegexEmailPattern = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*(\\.[A-Za-z]{2,})$";
public static final String RegexNamePattern = "[\u4e00-\u9fa5|A-za-z]*";
public static final String RegexNameWhiteSpacePattern = "\\S*\\s\\S*";
public static final String RegexPwPattern = "[A-Za-z0-9!@#$%^&*?-_+=]*";
public static final int qqMinLength = 5;
public static final int qqMaxLength = 10;
public static final SearchRepresentation getDefaultSearchRepresentation(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = sdf.format(DateUtility.getCurTimeInstance().getTime());
long departureMatch_Id = 1;
long arrivalMatch_Id = 2;
return new SearchRepresentation("false" + CarpoolConfig.urlSeperator + departureMatch_Id + CarpoolConfig.urlSeperator + arrivalMatch_Id + CarpoolConfig.urlSeperator + dateStr + CarpoolConfig.urlSeperator + dateStr + CarpoolConfig.urlSeperator + "0" + CarpoolConfig.urlSeperator + "0" + CarpoolConfig.urlSeperator + "0"+CarpoolConfig.urlSeperator + dateStr);
}
public static final void initConfig(){
//do nothing, force static block initialization at start of server
}
public static final String timeZoneIdNY = "America/New_York";
public static final String timeZoneIdCH = "asia/shanghai";
public static final String timeZoneStandard = "UTC";
}