/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.resource.xml;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.enonic.cms.core.resource.ResourceReferencer;
import com.enonic.cms.core.resource.ResourceReferencerType;
import com.enonic.cms.core.structure.SiteKey;
final class SortBySiteBuilderWrapper
{
private Collection<ResourceReferencer> usedByCollection = null;
public SortBySiteBuilderWrapper( Collection<ResourceReferencer> usedByCollection )
{
this.usedByCollection = usedByCollection;
}
public Map<SiteKey, String> getSites()
{
HashMap<SiteKey, String> sites = new HashMap<SiteKey, String>();
for ( ResourceReferencer ref : usedByCollection )
{
if ( ref.getSiteKey() != null && !sites.containsKey( ref.getSiteKey() ) )
{
sites.put( ref.getSiteKey(), ref.getSiteName() );
}
}
return sites;
}
public List<ResourceReferencer> getContentObjectUsage( SiteKey siteKey )
{
List<ResourceReferencer> objects = getReferencer( siteKey, ResourceReferencerType.CONTENT_OBJECT_STYLE );
objects.addAll( getReferencer( siteKey, ResourceReferencerType.CONTENT_OBJECT_BORDER ) );
return objects;
}
public List<ResourceReferencer> getPageTemplateUsage( SiteKey siteKey )
{
List<ResourceReferencer> templates = getReferencer( siteKey, ResourceReferencerType.PAGE_TEMPLATE_STYLE );
templates.addAll( getReferencer( siteKey, ResourceReferencerType.PAGE_TEMPLATE_CSS ) );
return templates;
}
public List<ResourceReferencer> getContentTypeUsage()
{
return getReferencer( null, ResourceReferencerType.CONTENT_TYPE_CSS );
}
public List<ResourceReferencer> getSiteUsage()
{
return getReferencer( null, ResourceReferencerType.SITE_DEFAULT_CSS );
}
private List<ResourceReferencer> getReferencer( SiteKey siteKey, ResourceReferencerType type )
{
List<ResourceReferencer> objects = new ArrayList<ResourceReferencer>();
for ( ResourceReferencer ref : usedByCollection )
{
if ( ref.getType().equals( type ) && ( siteKey == null || ref.getSiteKey().equals( siteKey ) ) )
{
objects.add( ref );
}
}
return objects;
}
}