package com.simpligility.maven.plugins.android.phase01generatesources;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
/**
* Looks for duplicate layout files across Android resource packages.
*/
final class ConflictingLayoutDetector
{
private Map<String, Collection<String>> map = new HashMap<String, Collection<String>>();
public void addLayoutFiles( String packageName, String[] layoutFiles )
{
map.put( packageName, Arrays.asList( layoutFiles ) );
}
public Collection<ConflictingLayout> getConflictingLayouts()
{
final Map<String, ConflictingLayout> result = new TreeMap<String, ConflictingLayout>();
for ( final String entryA : map.keySet() )
{
for ( final String entryB : map.keySet() )
{
if ( entryA.equals( entryB ) )
{
continue;
}
// Find any layout files that are in both packages.
final Set<String> tmp = new HashSet<String>();
tmp.addAll( map.get( entryA ) );
tmp.retainAll( map.get( entryB ) );
for ( final String layoutFile : tmp )
{
if ( !result.containsKey( layoutFile ) )
{
result.put( layoutFile, new ConflictingLayout( layoutFile ) );
}
final ConflictingLayout layout = result.get( layoutFile );
layout.addPackageName( entryA );
layout.addPackageName( entryB );
}
}
}
return result.values();
}
}