AddressGroup.java
package com.ziesemer.utils.web.addressFilter;
import java.util.Collections;
import java.util.List;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ziesemer.utils.web.addressFilter.actions.IAction;
import com.ziesemer.utils.web.addressFilter.conditions.ICondition;
/**
* @author Mark A. Ziesemer
* <a href="http://www.ziesemer.com."><www.ziesemer.com></a>
*/
public class AddressGroup{
protected static final Logger LOGGER = LoggerFactory.getLogger(AddressGroup.class);
protected final String groupId;
protected final List<ICondition> conditions;
protected final List<IAction> actions;
public AddressGroup(final String groupId, final List<ICondition> conditions, final List<IAction> actions){
this.groupId = groupId;
this.conditions = conditions;
this.actions = actions;
}
public void run(final ServletRequest request, final ServletResponse response, final FilterState fs) throws Exception{
LOGGER.trace("({}) Running address group \"{}\"...", fs.getFilterName(), groupId);
for(final ICondition condition : conditions){
if(!condition.checkCondition(request)){
return;
}
}
for(final IAction action : actions){
LOGGER.debug("({}) Match on address group \"{}\", running actions...", fs.getFilterName(), groupId);
action.run(request, response, fs, groupId);
}
}
public String getGroupId(){
return groupId;
}
/**
* <p>
* Returns a read-only view of the group's conditions, primarily for unit testing.
* </p>
*/
public List<ICondition> getConditions(){
return Collections.unmodifiableList(conditions);
}
/**
* <p>
* Returns a read-only view of the group's actions, primarily for unit testing.
* </p>
*/
public List<IAction> getActions(){
return Collections.unmodifiableList(actions);
}
}