/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.content.contentdata.custom;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.enonic.esl.containers.ExtendedMap;
public class FormItemsGroup
{
private Pattern groupPattern;
private Map<Integer, List<String>> groupedFormEntries = new TreeMap<Integer, List<String>>();
public FormItemsGroup( String groupName, ExtendedMap formItems )
{
groupPattern = Pattern.compile( groupName + "\\[(\\d+)\\]\\.([-\\w]+)" );
for ( Object entry : formItems.keySet() )
{
String entryName = (String) entry;
Matcher matcher = groupPattern.matcher( entryName );
if ( matcher.matches() )
{
String foundEntryFormItemName = matcher.group( 0 );
Integer groupIndex = new Integer( matcher.group( 1 ) );
if ( groupedFormEntries.get( groupIndex ) == null )
{
groupedFormEntries.put( groupIndex, new ArrayList<String>() );
}
groupedFormEntries.get( groupIndex ).add( foundEntryFormItemName );
}
}
}
public Set<Integer> getGroupIndexes()
{
return groupedFormEntries.keySet();
}
public List<String> getFormEntriesInGroup( Integer groupIndex )
{
return groupedFormEntries.get( groupIndex );
}
public String getFormEntryConfigName( String formEntryName )
{
Matcher m = groupPattern.matcher( formEntryName );
if ( m.matches() )
{
return m.group( 2 );
}
return null;
}
}