package com.perforce.spark.depot;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.perforce.p4java.core.IDepot;
import com.perforce.p4java.exception.P4JavaException;
import com.perforce.p4java.impl.generic.core.Depot;
import com.perforce.p4java.server.IOptionsServer;
import com.perforce.spark.artifact.ArtifactType;
import com.perforce.spark.site.SiteType;
public class DepotFactory {
public static List<DepotModel> listDeployable(IOptionsServer p4,
ArtifactType type) throws P4JavaException {
List<DepotModel> list = new ArrayList<>();
List<IDepot> depots = p4.getDepots();
for (IDepot idepot : depots) {
DepotModel depotModel = new DepotModel((Depot) idepot);
if (depotModel.getType() == type
&& depotModel.getSite() == SiteType.STORE) {
list.add(depotModel);
continue;
}
}
return list;
}
public static List<DepotModel> listBySite(IOptionsServer p4, SiteType type)
throws P4JavaException {
List<DepotModel> list = new ArrayList<>();
List<IDepot> depots = p4.getDepots();
for (IDepot idepot : depots) {
DepotModel depotModel = new DepotModel((Depot) idepot);
if (depotModel.getSite() == type
&& depotModel.getType() != ArtifactType.UNKNOWN) {
list.add(depotModel);
continue;
}
}
return list;
}
public static List<DepotModel> listByType(IOptionsServer p4, ArtifactType type)
throws P4JavaException {
List<DepotModel> list = new ArrayList<>();
List<IDepot> depots = p4.getDepots();
for (IDepot idepot : depots) {
DepotModel depotModel = new DepotModel((Depot) idepot);
if (depotModel.getType() == type
&& depotModel.getType() != ArtifactType.UNKNOWN) {
list.add(depotModel);
continue;
}
}
return list;
}
public static List<DepotModel> listAll(IOptionsServer p4)
throws P4JavaException {
List<DepotModel> list = new ArrayList<>();
List<IDepot> depots = p4.getDepots();
for (IDepot idepot : depots) {
DepotModel depotModel = new DepotModel((Depot) idepot);
if (depotModel.getType() != ArtifactType.UNKNOWN) {
list.add(depotModel);
}
}
return list;
}
public static DepotModel getByBase(IOptionsServer p4, String base)
throws P4JavaException {
List<String> parts = new ArrayList<>();
parts.addAll(Arrays.asList(base.split("/")));
parts.remove(0);
parts.remove(0);
String depotName = parts.remove(0);
return getByName(p4, depotName);
}
public static DepotModel getByName(IOptionsServer p4, String depotName)
throws P4JavaException {
IDepot depot = p4.getDepot(depotName);
return new DepotModel(depot);
}
}