/* */ package org.geoserver.catalog.hibernate.beans; import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; import javax.persistence.PostLoad; import javax.persistence.PrePersist; import javax.persistence.PreUpdate; import org.geoserver.catalog.LayerInfo; import org.geoserver.catalog.impl.*; import org.geoserver.catalog.impl.LayerGroupInfoImpl; import org.geoserver.catalog.impl.StyleInfoImpl; import org.geoserver.hibernate.Hibernable; import org.geotools.util.logging.Logging; /** * * @author ETj <etj at geo-solutions.it> */ public class LayerGroupInfoImplHb extends LayerGroupInfoImpl implements Hibernable { private final static Logger LOGGER = Logging.getLogger(LayerGroupInfoImplHb.class); /** * */ private static final long serialVersionUID = 9062753202399238032L; private Integer version = null; private List<GroupedLayerHb> groupedLayers = new ArrayList<GroupedLayerHb>(); public List<GroupedLayerHb> getGroupedLayers() { return groupedLayers; } protected void setGroupedLayers(List<GroupedLayerHb> groupedLayers) { this.groupedLayers = groupedLayers; } @PrePersist public void prepersist() { if(getLayers().size() != getStyles().size()) throw new IllegalStateException("Layers and Styles sizes don't match."); LOGGER.info("LG " + getName() + ": prepersisting " + getGroupedLayers().size() + " -> "+ getStyles().size() + " grouped layers"); getGroupedLayers().clear(); for (int i = 0; i < layers.size(); i++) { getGroupedLayers().add(new GroupedLayerHb((LayerInfoImplHb)layers.get(i), (StyleInfoImpl)styles.get(i))); } } // @PreUpdate public void preupdate() { if(getLayers().size() != getStyles().size()) throw new IllegalStateException("Layers and Styles sizes don't match."); LOGGER.info("LG " + getName() + ": preupdating " + getGroupedLayers().size() + " -> "+ getStyles().size() + " grouped layers"); getGroupedLayers().clear(); for (int i = 0; i < layers.size(); i++) { getGroupedLayers().add(new GroupedLayerHb((LayerInfoImplHb)layers.get(i), (StyleInfoImpl)styles.get(i))); } } @PostLoad public void postload() { LOGGER.info("LG " + getName() + ": postloaded " + getStyles().size() + " -> "+ getGroupedLayers().size() + " grouped layers"); getLayers().clear(); getStyles().clear(); for (GroupedLayerHb groupedLayerHb : getGroupedLayers()) { getLayers().add(groupedLayerHb.getLayer()); getStyles().add(groupedLayerHb.getStyle()); } } @Override public String toString() { StringBuilder sb = new StringBuilder(getClass().getSimpleName()) .append("[id:").append(getId()) .append(" name:").append(getName()) .append(" gl:").append(groupedLayers==null?-1:groupedLayers.size()) .append(" arr:").append(layers==null?-1:layers.size()) .append(" {"); if(groupedLayers != null) { for (GroupedLayerHb groupedLayerHb : groupedLayers) { sb.append(groupedLayerHb.getId()).append(' '); } } sb.append("}]"); return sb.toString(); } }