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;
}
}
}
-
- /**
- * お勧めリンクリストが設定されていない場合(nullの場合)、デフォルトのお勧めリストを設定する.<br>
- * すでに設定されている場合(空を含む)は何もしない.<br>
- * <br>
- * おすすめリンクがサポートされてなかったころのデータは、おすすめリンク用のタグそのものが存在せずnullとなる.<br>
- * サポート後のデータでリンクを未設定にしている場合は、空のリストとなる.<br>
- * したがって、nullの場合のみ、おすすめリンクを補完する.<br>
- *
- * @param characterData
- * キャラクターデータ
- */
- public void compensateRecommendationList(CharacterData characterData) {
- if (characterData == null) {
- throw new IllegalArgumentException();
- }
-
- // キャラクターデータの構造がデフォルトの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;
- }
- }
- }
- }
- return recommendations;
- }
}