Factions3/src/main/java/com/massivecraft/factions/entity/FactionColls.java

104 lines
2.7 KiB
Java
Raw Normal View History

package com.massivecraft.factions.entity;
import java.io.File;
import java.lang.reflect.Type;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import com.massivecraft.factions.Const;
import com.massivecraft.factions.Factions;
2014-06-04 14:02:23 +02:00
import com.massivecraft.massivecore.Aspect;
import com.massivecraft.massivecore.MassiveCore;
import com.massivecraft.massivecore.util.DiscUtil;
import com.massivecraft.massivecore.util.MUtil;
2014-09-13 00:50:33 +02:00
import com.google.gson.reflect.TypeToken;
public class FactionColls extends XColls<FactionColl, Faction>
{
// -------------------------------------------- //
// INSTANCE & CONSTRUCT
// -------------------------------------------- //
private static FactionColls i = new FactionColls();
public static FactionColls get() { return i; }
// -------------------------------------------- //
// OVERRIDE: COLLS
// -------------------------------------------- //
@Override
public FactionColl createColl(String collName)
{
return new FactionColl(collName);
}
@Override
public Aspect getAspect()
{
return Factions.get().getAspect();
}
@Override
public String getBasename()
{
2013-11-11 09:31:04 +01:00
return Const.COLLECTION_FACTION;
}
@Override
public void init()
{
super.init();
this.migrate();
}
// This method is for the 1.8.X --> 2.0.0 migration
public void migrate()
{
// Create file objects
File oldFile = new File(Factions.get().getDataFolder(), "factions.json");
File newFile = new File(Factions.get().getDataFolder(), "factions.json.migrated");
// Already migrated?
if ( ! oldFile.exists()) return;
// Faction ids /delete
// For simplicity we just drop the old special factions.
// They will be replaced with new autogenerated ones per universe.
Set<String> factionIdsToDelete = MUtil.set("0", "-1", "-2");
// Read the file content through GSON.
Type type = new TypeToken<Map<String, Faction>>(){}.getType();
Map<String, Faction> id2faction = Factions.get().gson.fromJson(DiscUtil.readCatch(oldFile), type);
2013-04-22 15:05:00 +02:00
// The Coll
2014-06-04 14:02:23 +02:00
FactionColl coll = this.getForUniverse(MassiveCore.DEFAULT);
2013-04-22 15:05:00 +02:00
// Set the data
for (Entry<String, Faction> entry : id2faction.entrySet())
{
String factionId = entry.getKey();
if (factionIdsToDelete.contains(factionId)) continue;
Faction faction = entry.getValue();
2013-04-22 15:05:00 +02:00
coll.attach(faction, factionId);
}
// Mark as migrated
oldFile.renameTo(newFile);
}
2013-04-22 15:05:00 +02:00
// -------------------------------------------- //
// INDEX
// -------------------------------------------- //
public void reindexUPlayers()
2013-04-22 15:05:00 +02:00
{
for (FactionColl coll : this.getColls())
{
coll.reindexUPlayers();
2013-04-22 15:05:00 +02:00
}
}
}