package open.dolphin.project;
import java.util.HashMap;
import java.util.Map;
/**
* @author Kazushi Minagawa Digital Globe, Inc.
* @author s.oh
*/
public final class RelaySettingBean extends AbstractSettingBean {
private boolean sendMml;
private String mmlVersion;
private String mmlDirectory;
private boolean sendKartePdf;
private String kartePdfDirectory;
private boolean pvtRelay;
private String pvtRelayDirectory;
private String pvtRelayEncoding;
private final Map<String, String[]> tagMap = new HashMap<>(5, 0.75f);
public RelaySettingBean() {
tagMap.put("pvtRelayEncoding", new String[]{"UTF-8", "SHIFT_JIS", "EUC_JP"});
}
@Override
public String[] propertyOrder() {
return new String[]{
"sendMml", "mmlVersion", "mmlDirectory",
"sendKartePdf", "kartePdfDirectory",
"pvtRelay", "pvtRelayDirectory", "pvtRelayEncoding"
};
}
@Override
public boolean isTagProperty(String property) {
return tagMap.get(property)!=null;
}
@Override
public String[] getTags(String property) {
String[] ret = tagMap.get(property);
return ret;
}
@Override
public boolean isDirectoryProperty(String property) {
return (property.equals("mmlDirectory") ||
property.equals("kartePdfDirectory") ||
property.equals("pvtRelayDirectory"));
}
@Override
public boolean isValidBean() {
boolean mmlOk = isSendMml() ? notEmpty(getMmlDirectory()) : true;
boolean pdfOk = isSendKartePdf() ? notEmpty(getKartePdfDirectory()) : true;
boolean relayOk = isPvtRelay() ? notEmpty(getPvtRelayDirectory()) : true;
return mmlOk && pdfOk && relayOk;
}
@Override
public void populate() {
ProjectStub stub = Project.getProjectStub();
// MML送信
boolean send = stub.getBoolean(Project.SEND_MML);
setSendMml(send);
// version3 -> disabled
setMmlVersion("230");
// 送信ディレクトリ
String val = stub.getString(Project.SEND_MML_DIRECTORY);
if (notEmpty(val)) {
setMmlDirectory(val);
}
//----------------------------------------------
// Karte PDF 送信
boolean sendKartePDF = stub.getBoolean(Project.KARTE_PDF_SEND_AT_SAVE);
setSendKartePdf(sendKartePDF);
// 送信ディレクトリ
val = stub.getString(Project.KARTE_PDF_SEND_DIRECTORY);
if (notEmpty(val)) {
setKartePdfDirectory(val);
}
//----------------------------------------------
// Relay
boolean relay = stub.getBoolean(Project.PVT_RELAY);
setPvtRelay(relay);
// Relayディレクトリ
val = stub.getString(Project.PVT_RELAY_DIRECTORY);
if (notEmpty(val)) {
setPvtRelayDirectory(val);
}
// デフォルト値で UTF-8が与えられている
val = stub.getString(Project.PVT_RELAY_ENCODING, "utf8").toLowerCase();
val = val.replaceAll("-", "");
val = val.replaceAll("_", "");
String[] tag = getTags("pvtRelayEncoding");
if (val.equals("utf8")) {
setPvtRelayEncoding(tag[0]);
} else if (val.equals("shiftjis") || val.equals("Shift_JIS")) {
setPvtRelayEncoding(tag[1]);
} else if (val.equals("eucjp")) {
setPvtRelayEncoding(tag[2]);
}
}
@Override
public void store() {
ProjectStub stub = Project.getProjectStub();
// MML送信
stub.setBoolean(Project.SEND_MML, isSendMml());
// MML バージョン
stub.setString(Project.MML_VERSION, "230");
// 送信先ディレクトリ null値は propertiesに設定できない
String value = getMmlDirectory();
if (notEmpty(value)) {
stub.setString(Project.SEND_MML_DIRECTORY, value);
}
//----------------------------------------------
// Karte PDF 送信
stub.setBoolean(Project.KARTE_PDF_SEND_AT_SAVE, isSendKartePdf());
// 送信先ディレクトリ null値は propertiesに設定できない
value = getKartePdfDirectory();
if (notEmpty(value)) {
stub.setString(Project.KARTE_PDF_SEND_DIRECTORY, value);
}
//----------------------------------------------
// Relay
stub.setBoolean(Project.PVT_RELAY, isPvtRelay());
// Relayディレクトリ null値は propertiesに設定できない
value = getPvtRelayDirectory();
if (notEmpty(value)) {
stub.setString(Project.PVT_RELAY_DIRECTORY, value);
}
String val = getPvtRelayEncoding().toLowerCase();
val = val.replaceAll("-", "");
val = val.replaceAll("_", "");
stub.setString(Project.PVT_RELAY_ENCODING, val);
}
public boolean isSendMml() {
return sendMml;
}
public void setSendMml(boolean sendMml) {
this.sendMml = sendMml;
}
public String getMmlVersion() {
return mmlVersion;
}
public void setMmlVersion(String mmlVersion) {
this.mmlVersion = mmlVersion;
}
public String getMmlDirectory() {
return mmlDirectory;
}
public void setMmlDirectory(String mmlDirectory) {
this.mmlDirectory = mmlDirectory;
}
public boolean isSendKartePdf() {
return sendKartePdf;
}
public void setSendKartePdf(boolean sendKartePdf) {
this.sendKartePdf = sendKartePdf;
}
public String getKartePdfDirectory() {
return kartePdfDirectory;
}
public void setKartePdfDirectory(String kartePdfDirectory) {
this.kartePdfDirectory = kartePdfDirectory;
}
public boolean isPvtRelay() {
return pvtRelay;
}
public void setPvtRelay(boolean pvtRelay) {
this.pvtRelay = pvtRelay;
}
public String getPvtRelayDirectory() {
return pvtRelayDirectory;
}
public void setPvtRelayDirectory(String pvtRelayDirectory) {
this.pvtRelayDirectory = pvtRelayDirectory;
}
public String getPvtRelayEncoding() {
return pvtRelayEncoding;
}
public void setPvtRelayEncoding(String pvtRelayEncoding) {
this.pvtRelayEncoding = pvtRelayEncoding;
}
}