/*
* 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.services.orgutils;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.apache.velocity.context.Context;
import com.aimluck.eip.http.HttpServletRequestLocator;
import com.aimluck.eip.http.ServletContextLocator;
import com.aimluck.eip.services.config.ALConfigHandler.Property;
import com.aimluck.eip.services.config.ALConfigService;
import com.aimluck.eip.services.social.ALContainerConfigService;
import com.aimluck.eip.services.social.ALSocialApplicationHandler;
import com.aimluck.eip.util.ALEipUtils;
import com.aimluck.eip.util.ALServletUtils;
/**
*
*
*/
public abstract class ALOrgUtilsHandler {
public abstract String getTheme(String orgId);
public abstract String getAlias(String orgId);
public abstract String getAliasjp(String orgId);
public abstract String getCopyright(String orgId);
public abstract String getAliasCopyright(String orgId);
public abstract String getCopyrightShort(String orgId);
public abstract String getVersion(String orgId);
public Map<String, String> getParameters(String orgId) {
Map<String, String> hash = new HashMap<String, String>();
hash.put("theme", getTheme(orgId));
hash.put("alias", getAlias(orgId));
hash.put("aliasjp", getAliasjp(orgId));
hash.put("copyright", getCopyright(orgId));
hash.put("copyright_short", getCopyrightShort(orgId));
hash.put("alias_copyright", getAliasCopyright(orgId));
hash.put("version", getVersion(orgId));
String url = getExternalResourcesUrl(orgId);
hash.put("external_resources_url", url);
hash.put("unlockeddomain_url", getUnlockedDomainBaseUrl(orgId));
hash.put("context_path", getContextPath(orgId));
hash.put("isXDomain", String.valueOf(url.startsWith("http")));
HttpServletRequest request = HttpServletRequestLocator.get();
String useragent = request.getHeader("User-Agent").trim();
hash.put("client", ALEipUtils.getClient(useragent));
hash.put("clientVer", ALEipUtils.getClientVersion(useragent));
return hash;
}
/**
* JavaScript,CSS,画像を外部サーバーから取得する
*
* @param rundata
* @return
*/
public String getExternalResourcesUrl(String orgId) {
StringBuffer url = new StringBuffer();
String external_resources_url = "";
try {
external_resources_url =
ALConfigService.get(Property.EXTERNAL_RESOURCES_URL);
} catch (IllegalStateException ignore) {
// ignore
}
if (external_resources_url.isEmpty()) {
ServletContext servletContext = ServletContextLocator.get();
String contextPath = servletContext.getContextPath();
if ("/".equals(contextPath)) {
contextPath = "";
}
url.append(contextPath);
} else {
url.append(external_resources_url);
}
return url.toString();
}
public String getXDomainBasePath(String orgId) {
String url = getExternalResourcesUrl(orgId);
if (url.startsWith("http")) {
return url;
} else {
return new StringBuilder(ALServletUtils.getRequestBaseUrl())
.append(url)
.toString();
}
}
public String getUnlockedDomainBaseUrl(String orgId) {
String unlockedDomain = "";
try {
unlockedDomain =
ALContainerConfigService
.get(ALSocialApplicationHandler.Property.UNLOCKED_DOMAIN);
} catch (IllegalStateException ignore) {
// ignore
} catch (Exception ignore) {
// ignore
}
if (unlockedDomain.isEmpty()) {
return "";
}
HttpServletRequest request = HttpServletRequestLocator.get();
String scheme = request.getScheme();
StringBuffer url = new StringBuffer(scheme);
url.append("://");
url.append(unlockedDomain);
return url.toString();
}
public String getContextPath(String orgId) {
String contextPath = ServletContextLocator.get().getContextPath();
if ("/".equals(contextPath)) {
contextPath = "";
}
return contextPath;
}
public void assignCommonContext(Context context, String orgId) {
Map<String, String> map = getParameters(orgId);
Iterator<Entry<String, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Entry<String, String> next = iterator.next();
context.put(next.getKey(), next.getValue());
}
}
}