/*
* Copyright (c) 2013-2014 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.db.common.schema;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElements;
import javax.xml.bind.annotation.XmlRootElement;
import com.google.common.base.Objects;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@XmlRootElement(name = "dbschemas")
public class DbSchemas {
private static final Logger log = LoggerFactory.getLogger(DbSchemas.class);
private List<DbSchema> schemas = new ArrayList<>();
// empty ctor for JAXB
public DbSchemas() {
}
public DbSchemas(List<DbSchema> schemas) {
this.schemas = schemas;
}
@XmlElements({
@XmlElement(name = "data_object_schema", type = DataObjectSchema.class),
@XmlElement(name = "time_series_schema", type = TimeSeriesSchema.class),
@XmlElement(name = "data_point_schema", type = DataPointSchema.class)
})
public List<DbSchema> getSchemas() {
return schemas;
}
public void setSchemas(List<DbSchema> schemas) {
this.schemas = schemas;
}
public void addSchema(DbSchema schema) {
schemas.add(schema);
}
@Override
public boolean equals(Object o) {
if (!(o instanceof DbSchemas)) {
return false;
}
DbSchemas schemas = (DbSchemas) o;
return Objects.equal(this.schemas, schemas.getSchemas());
}
@Override
public int hashCode() {
return Objects.hashCode(schemas);
}
public boolean hasDuplicateField() {
for (DbSchema dbSchema : schemas) {
if (dbSchema.hasDuplicateField()) {
return true;
}
}
return false;
}
public Map<String, List<FieldInfo>> getDuplicateFields() {
Map<String, List<FieldInfo>> schemaDuplicateColumns = new HashMap<String, List<FieldInfo>>();
for (DbSchema dbSchema : schemas) {
if (dbSchema.hasDuplicateField()) {
schemaDuplicateColumns.put(dbSchema.getName(), dbSchema.getDuplicateFields());
}
}
return schemaDuplicateColumns;
}
}