package org.activityinfo.server.digest.geo; import com.google.common.base.Strings; import org.activityinfo.legacy.shared.model.SchemaDTO; import org.activityinfo.legacy.shared.reports.content.MapContent; import org.activityinfo.server.database.hibernate.entity.UserDatabase; import org.activityinfo.server.digest.DigestModel; import org.activityinfo.server.digest.UserDigest; import java.util.Collection; import java.util.Set; import java.util.TreeSet; public class GeoDigestModel implements DigestModel { private final UserDigest userDigest; private SchemaDTO schemaDTO; private final Set<DatabaseModel> databases; public GeoDigestModel(UserDigest userDigest) { this.userDigest = userDigest; this.databases = new TreeSet<DatabaseModel>(); } public UserDigest getUserDigest() { return userDigest; } public SchemaDTO getSchemaDTO() { return schemaDTO; } public void setSchemaDTO(SchemaDTO schemaDTO) { this.schemaDTO = schemaDTO; } @Override public boolean hasData() { for (DatabaseModel db : databases) { if (!db.isEmpty()) { return true; } } return false; } public void addDatabase(DatabaseModel databaseModel) { databases.add(databaseModel); } public Collection<DatabaseModel> getDatabases() { return databases; } public static class DatabaseModel implements Comparable<DatabaseModel> { private final GeoDigestModel model; private final UserDatabase database; private MapContent content; private String url; public DatabaseModel(GeoDigestModel model, UserDatabase database) { this.model = model; this.database = database; model.addDatabase(this); } public GeoDigestModel getModel() { return model; } public UserDatabase getDatabase() { return database; } public String getName() { return database.getName(); } public MapContent getContent() { return content; } public void setContent(MapContent content) { this.content = content; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public boolean isRenderable() { return content != null && !content.getMarkers().isEmpty() && !Strings.isNullOrEmpty(url); } public boolean isEmpty() { return !isRenderable(); } @Override public int compareTo(DatabaseModel o) { return database.getName().compareTo(o.database.getName()); } } }