import charactermanaj.model.CustomLayerOrderKey;
import charactermanaj.model.Layer;
import charactermanaj.model.PartsCategory;
+import charactermanaj.model.RecommendationURL;
import charactermanaj.model.io.CharacterDataDefaultProvider.DefaultCharacterDataVersion;
import charactermanaj.util.DirectoryConfig;
import charactermanaj.util.FileNameNormalizer;
if (characterData == null) {
throw new IllegalArgumentException();
}
- if (characterData.getRecommendationURLList() != null) {
- // 補填の必要なし
- return;
+
+ // キャラクターデータの構造がデフォルトのv2, v3と同一であれば、対応するリンクを設定する
+ List<RecommendationURL> recommendations = getCompensateRecommendationList(characterData);
+ if (recommendations != null) {
+ characterData.setRecommendationURLList(recommendations);
+ }
+ }
+
+ /**
+ * キャラクターデータに対するお勧めリストの補完が必要であれば、そのリストを返す。
+ * すでに設定済みであるか、対応する補完リストがない場合はnullを返す。
+ * @param characterData
+ * @return お勧めリスト、もしくはnull
+ */
+ public List<RecommendationURL> getCompensateRecommendationList(CharacterData characterData) {
+ if (characterData.getRecommendationURLList() == null) {
+ // 補填の必要ある場合のみ
+ CharacterDataDefaultProvider defProv = new CharacterDataDefaultProvider();
+ for (DefaultCharacterDataVersion dataVersion : DefaultCharacterDataVersion.values()) {
+ CharacterData defaultCd = defProv.createDefaultCharacterData(dataVersion);
+ if (defaultCd.toSignatureString().equals(characterData.toSignatureString())) {
+ return defaultCd.getRecommendationURLList();
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 補完されたものを除いたお勧めリストを取得する。
+ * デフォルト構造でデフォルトと同一のお勧めリストの場合、補完されたものとしてnullを返す。
+ * それ以外はお勧めリストをそのまま返す。
+ * @param cd
+ */
+ public List<RecommendationURL> getUncompensateRecommendationList(CharacterData cd) {
+ // デフォルトのキャラクターデータ構造で、
+ // お勧めリストと内容が同じの場合は、明示的にリストを設定しない.
+ String cdSig = cd.toStructureString();
+ List<RecommendationURL> recommendations = cd.getRecommendationURLList();
+ if (recommendations != null) {
+ CharacterDataDefaultProvider defProv = new CharacterDataDefaultProvider();
+ for (DefaultCharacterDataVersion dataVersion : DefaultCharacterDataVersion.values()) {
+ CharacterData defaultCd = defProv.createDefaultCharacterData(dataVersion);
+ String defSig = defaultCd.toStructureString();
+ if (cdSig.equals(defSig)) {
+ List<RecommendationURL> defaultRecommendationURLList = defaultCd.getRecommendationURLList();
+ if (defaultRecommendationURLList != null && defaultRecommendationURLList.equals(recommendations)) {
+ recommendations = null;
+ break;
+ }
+ }
+ }
}
- CharacterDataDefaultProvider defProv = new CharacterDataDefaultProvider();
- CharacterData defaultCd = defProv
- .createDefaultCharacterData(DefaultCharacterDataVersion.V3);
- characterData.setRecommendationURLList(defaultCd
- .getRecommendationURLList());
+ return recommendations;
}
}
import charactermanaj.model.PartsIdentifier;
import charactermanaj.model.PartsSet;
import charactermanaj.model.RecommendationURL;
-import charactermanaj.model.io.CharacterDataDefaultProvider;
-import charactermanaj.model.io.CharacterDataDefaultProvider.DefaultCharacterDataVersion;
import charactermanaj.model.io.CharacterDataPersistent;
import charactermanaj.ui.model.AbstractTableModelWithComboBoxModel;
import charactermanaj.ui.util.ScaleSupport;
partssetsTableModel.setDefaultPartsSetId(original.getDefaultPartsSetId());
// お勧めリンク
+ CharacterDataPersistent persist = CharacterDataPersistent.getInstance();
List<RecommendationURL> recommendationURLList = original.getRecommendationURLList();
if (recommendationURLList == null) {
- // キャラクターデータのお勧めリンクがnull(古い形式)の場合は、デフォルトのお勧めリンクで代替する.
- CharacterDataDefaultProvider defProv = new CharacterDataDefaultProvider();
- CharacterData defaultCd = defProv
- .createDefaultCharacterData(DefaultCharacterDataVersion.V3);
- recommendationURLList = defaultCd.getRecommendationURLList();
+ // お勧めリンクが設定されていない場合は、キャラクターデータに対応する
+ // 既定のお勧めリストがあれば取得する (なければnull)
+ recommendationURLList = persist.getCompensateRecommendationList(original);
}
if (recommendationURLList != null) {
for (RecommendationURL recommendationURL : recommendationURLList) {
}
}
-
protected void onOpenDir() {
try {
URI docBase = original.getDocBase();
recommendationURLList.add(recommendationURL);
}
}
- CharacterDataDefaultProvider defProv = new CharacterDataDefaultProvider();
- CharacterData defaultCd = defProv
- .createDefaultCharacterData(DefaultCharacterDataVersion.V3);
- List<RecommendationURL> defaultRecommendationURLList = defaultCd.getRecommendationURLList();
- if (defaultRecommendationURLList != null && defaultRecommendationURLList.equals(recommendationURLList)) {
- // デフォルトのお勧めリストと内容が同じの場合は、明示的にリストを設定しない.
- recommendationURLList = null;
- }
cd.setRecommendationURLList(recommendationURLList);
return cd;
// rev:c587663f3dda3a4a874ef6810a336126f07d482c まではMainFrameのお薦めリンクメニュー構築時に補完していた。
// キャラクターデータのダウンロード問い合わせ対応のため、ここで先に補完しておく。
if (characterData.getRecommendationURLList() == null) {
- CharacterData v2 = defProv.createDefaultCharacterData(DefaultCharacterDataVersion.V3);
+ CharacterData v2 = defProv.createDefaultCharacterData(DefaultCharacterDataVersion.V2);
if (v2.toStructureString().equals(structureSig) || v3.toStructureString().equals(structureSig)) {
// デフォルトのキャラクターセット(v2, v3)と同一構造であれば、デフォルトで補完する
final CharacterDataPersistent persistent = CharacterDataPersistent.getInstance();