Commit 3caba0b7 by Jeong Gilmo

#33721 絞り検索のAPIとの連携

- 絞り検索のマスタデータを受信処理の修正
parent 791c65e7
......@@ -27,12 +27,12 @@ public class ApertureMasterDataJSON extends AcmsCommonJSON {
protected void parse(JSONObject json) throws JSONValidationException {
// 絞り検索の日付を取得
if(json.has(apertureLastEditDate)) {
lastEditDate = json.getString(apertureLastEditDate);
this.lastEditDate = json.getString(apertureLastEditDate);
}
// 絞り検索のデータを取得
if (json.has(ApertureData)) {
apertureData = JsonUtil.getJSONObject(json, ApertureData);
this.apertureData = JsonUtil.getJSONObject(json, ApertureData);
}
}
}
......@@ -5,8 +5,12 @@ package jp.agentec.abook.abv.bl.acms.client.parameters;
*/
public class GetApertureMasterDataParameters extends AcmsParameters {
private String lastEdit;
public GetApertureMasterDataParameters(String sid) {
public GetApertureMasterDataParameters(String sid, String lastFetchDate) {
super(sid);
this.lastEdit = lastFetchDate;
}
public String getLastEdit() { return this.lastEdit; }
}
\ No newline at end of file
......@@ -164,11 +164,8 @@ public class ContentRefresher {
categoryLogic.initializeCategories(); // カテゴリ設定
// 絞り検索マスタデータの最新更新された時のFetchDateを一時に保存する。
Logger.d(TAG, "before fetchDate : " + ABVDataCache.getInstance().getTempApertureMasterDataFetchDate());
// CMSでメンテナンスされる絞り検索マスタデータをアプリから取得できるようにJSONファイルを生成する。
apertureMasterDataLogic.initializeApertureMasterData(ABVDataCache.getInstance().getTempApertureMasterDataFetchDate());
Logger.d(TAG, "after fetchDate : " + ABVDataCache.getInstance().getTempApertureMasterDataFetchDate());
apertureMasterDataLogic.initializeApertureMasterData();
if (interrupt) { // この時点で停止要求が来た場合先には進まない。(ServiceOption/Group/Categoryの更新は1セットで行う(トランザクションはそれぞれ別))
Logger.d(TAG, "stop refresh worker before content update.");
......@@ -344,7 +341,6 @@ public class ContentRefresher {
try {
// サーバー通信でプロジェクト取得
operationLogic.initializeOperations();
} catch (Exception e1) {
Logger.e(TAG, e1);
e = e1;
......
package jp.agentec.abook.abv.bl.logic;
import org.json.adf.JSONException;
import org.json.adf.JSONObject;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Date;
import java.util.Iterator;
import jp.agentec.abook.abv.bl.acms.client.AcmsClient;
import jp.agentec.abook.abv.bl.acms.client.json.ApertureMasterDataJSON;
import jp.agentec.abook.abv.bl.acms.client.parameters.GetApertureMasterDataParameters;
import jp.agentec.abook.abv.bl.common.ABVEnvironment;
import jp.agentec.abook.abv.bl.common.log.Logger;
import jp.agentec.abook.abv.bl.common.util.JsonUtil;
import jp.agentec.adf.util.DateTimeFormat;
import jp.agentec.adf.util.DateTimeUtil;
import jp.agentec.adf.util.FileUtil;
public class ApertureMasterDataLogic extends AbstractLogic {
private static final java.lang.String TAG = "RefineMasterDataLogic";
private static final String ApertureData = "apertureData";
/**
* グループ情報をサーバから受信し、ローカルに保存します。既存のデータは上書きされます。また、サーバにないグループがローカルにある場合、そのグループは削除されます。
* グループ情報をサーバから受信し、ローカルに保存します。既存のデータは上書きされます。
* また、サーバにないグループがローカルにある場合、そのグループは削除されます。
* 絞り検索マスタデータ情報をサーバから受信し、ローカルにJSONで保存する。
* 日付を比べてサーバーからローカルのデータより最新のデータを受信した場合、受信した情報を保存する。
* ローカルの日付はない場合、受信した情報を保存する。
* @param lastFetchDateString
*/
public void initializeApertureMasterData(String lastFetchDateString) {
public void initializeApertureMasterData() {
try {
GetApertureMasterDataParameters param = new GetApertureMasterDataParameters(cache.getMemberInfo().sid);
//端末機の日付
String lastFetchDateString = cache.getTempApertureMasterDataFetchDate();
GetApertureMasterDataParameters param = new GetApertureMasterDataParameters(cache.getMemberInfo().sid, lastFetchDateString);
//サーバーから絞り検索マスタデータを取得
ApertureMasterDataJSON masterDataJson = AcmsClient.getInstance(cache.getUrlPath(), networkAdapter).getApertureMasterData(param);
//サーバーデータの日付
String lastEditDateString = masterDataJson.lastEditDate;
if(lastFetchDateString != null) {
Date lastFetchDate = DateTimeUtil.toDate(lastFetchDateString, "UTC", DateTimeFormat.yyyyMMddHHmmss_hyphen);
Date lastEditDate = DateTimeUtil.toDate(lastEditDateString, "UTC", DateTimeFormat.yyyyMMddHHmmss_hyphen);
if (lastFetchDate == null || lastEditDate.after(lastFetchDate)) {
if (lastFetchDateString == null){
//最初のマスタデータダウンロードの場合
if (masterDataJson.apertureData != null && masterDataJson.apertureData.keys().hasNext()) {
createApertureMasterDataJson(masterDataJson.apertureData);
cache.setTempApertureMasterDataFetchDate(lastEditDateString);
}
}
else{
else if(lastEditDateString != null){
//マスタデータがある場合、サーバーから修正事項があるセットだけ上書きする
Date lastFetchDate = DateTimeUtil.toDate(lastFetchDateString, "UTC", DateTimeFormat.yyyyMMddHHmmss_hyphen);
Date lastEditDate = DateTimeUtil.toDate(lastEditDateString, "UTC", DateTimeFormat.yyyyMMddHHmmss_hyphen);
if (lastEditDate != null && lastEditDate.after(lastFetchDate)) {
if (masterDataJson.apertureData != null && masterDataJson.apertureData.keys().hasNext()) {
createApertureMasterDataJson(masterDataJson.apertureData);
// updateApertureMasterDataJson(masterDataJson.apertureData);
cache.setTempApertureMasterDataFetchDate(lastEditDateString);
}
}
}
} catch (Exception e) {
Logger.e(TAG, "apertureMasterDataSend error : ", e);
}
......@@ -51,12 +72,12 @@ public class ApertureMasterDataLogic extends AbstractLogic {
/**
* apertureMaster.jsonファイル作成
* @param json
* @param masterDataJson
* @throws IOException
*/
private void createApertureMasterDataJson(JSONObject json) throws IOException {
private void createApertureMasterDataJson(JSONObject masterDataJson) throws IOException {
// マスタデータの保存されるパス
String masterDataJsonPath = ABVEnvironment.getInstance().getMasterFilePath() + File.separator + ABVEnvironment.getInstance().ApertureMasterDataFileName;
FileUtil.createFile(masterDataJsonPath, json.toString());
FileUtil.createFile(masterDataJsonPath, masterDataJson.toString());
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment