import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;
-import jp.sfjp.jindolf.log.LogWrapper;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import jp.sfjp.jindolf.net.HtmlSequence;
import jp.sfjp.jindolf.net.ServerAccess;
import jp.sourceforge.jindolf.corelib.LandDef;
// 古国ID
private static final String ID_VANILLAWOLF = "wolf";
- private static final LogWrapper LOGGER = new LogWrapper();
+ private static final Logger LOGGER = Logger.getAnonymousLogger();
private final LandDef landDef;
private final HtmlParser parser = new HtmlParser();
private final VillageListHandler handler = new VillageListHandler();
- private final List<Village> villageList = new LinkedList<Village>();
+ private final List<Village> villageList = new LinkedList<>();
/**
/**
* クエリー文字列から特定キーの値を得る。
- * クエリーの書式例:「a=b&c=d&e=f」この場合キーcの値はd
+ * クエリーの書式例:「{@literal a=b&c=d&e=f}」この場合キーcの値はd
* @param key キー
* @param allQuery クエリー
* @return 値
try{
uri = new URI(pureHREF);
}catch(URISyntaxException e){
- LOGGER.warn(
+ LOGGER.warning(
"不正なURI["
+ hrefValue
+ "]を検出しました");
try{
image = server.downloadImage(imageURL);
}catch(IOException e){
- LOGGER.warn(
+ LOGGER.log(Level.WARNING,
"イメージ[" + imageURL + "]"
+ "のダウンロードに失敗しました",
e );
}
/**
- * 村リストを更新する。
- * 元情報は国のトップページと村一覧ページ。
+ * 村一覧情報をダウンロードする。
+ * リスト元情報は国のトップページと村一覧ページ。
* 古国の場合は村一覧にアクセスせずトップページのみ。
- * å\8f¤å\9b½ä»¥å¤\96ã\81«村建てをやめた国はトップページにアクセスしない。
+ * å\8f¤å\9b½ä»¥å¤\96ã\81§村建てをやめた国はトップページにアクセスしない。
* 村リストはVillageの実装に従いソートされる。重複する村は排除。
* @throws java.io.IOException ネットワーク入出力の異常
+ * @return ソートされた村一覧
*/
- public void updateVillageList() throws IOException{
+ public SortedSet<Village> downloadVillageList() throws IOException {
LandDef thisLand = getLandDef();
LandState state = thisLand.getLandState();
boolean isVanillaWolf = thisLand.getLandId().equals(ID_VANILLAWOLF);
ServerAccess server = getServerAccess();
// たまに同じ村が複数回出現するので注意!
- SortedSet<Village> vset = new TreeSet<Village>();
+ SortedSet<Village> result = new TreeSet<>();
// トップページ
if(state.equals(LandState.ACTIVE) || isVanillaWolf){
try{
this.parser.parseAutomatic(content);
}catch(HtmlParseException e){
- LOGGER.warn("トップページを認識できない", e);
+ LOGGER.log(Level.WARNING, "トップページを認識できない", e);
}
List<Village> list = this.handler.getVillageList();
if(list != null){
- vset.addAll(list);
+ result.addAll(list);
}
}
try{
this.parser.parseAutomatic(content);
}catch(HtmlParseException e){
- LOGGER.warn("村一覧ページを認識できない", e);
+ LOGGER.log(Level.WARNING, "村一覧ページを認識できない", e);
}
List<Village> list = this.handler.getVillageList();
if(list != null){
- vset.addAll(list);
+ result.addAll(list);
}
}
- // TODO 村リスト更新のイベントリスナがあると便利か?
- this.villageList.clear();
- this.villageList.addAll(vset);
-
this.parser.reset();
this.handler.reset();
+ return result;
+ }
+
+ /**
+ * 村リストを更新する。
+ * @param vset ソート済みの村一覧
+ */
+ public void updateVillageList(SortedSet<Village> vset){
+ // TODO 村リスト更新のイベントリスナがあると便利か?
+ this.villageList.clear();
+ this.villageList.addAll(vset);
return;
}
public void startParse(DecodedContent content)
throws HtmlParseException{
reset();
- this.villageList = new LinkedList<Village>();
+ this.villageList = new LinkedList<>();
return;
}
String villageID = getVillageIDFromHREF(href);
if( villageID == null
|| villageID.length() <= 0 ){
- LOGGER.warn(
+ LOGGER.warning(
"認識できないURL[" + href + "]に遭遇しました。");
return;
}