package org.mapfish.print.processor;
import jsr166y.ForkJoinPool;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.mapfish.print.AbstractMapfishSpringTest;
import org.mapfish.print.TestHttpClientFactory;
import org.mapfish.print.attribute.map.MapAttribute;
import org.mapfish.print.attribute.map.MapfishMapContext;
import org.mapfish.print.config.Configuration;
import org.mapfish.print.config.ConfigurationFactory;
import org.mapfish.print.config.Template;
import org.mapfish.print.map.geotools.AbstractFeatureSourceLayer;
import org.mapfish.print.output.Values;
import org.mapfish.print.parser.MapfishParser;
import org.mapfish.print.processor.map.SetStyleProcessor;
import org.mapfish.print.wrapper.json.PJsonObject;
import org.springframework.beans.factory.annotation.Autowired;
import java.io.File;
import java.util.List;
import static org.junit.Assert.assertEquals;
@SuppressWarnings("unchecked")
public class SetStyleProcessorTest extends AbstractMapfishSpringTest {
public static final String BASE_DIR = "setstyle/";
@Rule
public TemporaryFolder folder = new TemporaryFolder();
@Autowired
private ConfigurationFactory configurationFactory;
@Autowired
private MapfishParser parser;
@Autowired
private ForkJoinPool forkJoinPool;
@Autowired
private TestHttpClientFactory httpClientFactory;
@Test
public void testAssignStyleBasic() throws Exception {
this.configurationFactory.setDoValidation(false);
final Configuration config = this.configurationFactory.getConfig(getFile(BASE_DIR + "basic/config.yaml"));
final Template template = config.getTemplate("main");
PJsonObject requestData = parseJSONObjectFromFile(SetStyleProcessorTest.class, BASE_DIR + "basic/request.json");
Values values = new Values(requestData, template, parser, this.folder.getRoot(), this.httpClientFactory, new File("."));
forkJoinPool.invoke(template.getProcessorGraph().createTask(values));
final MapAttribute.MapAttributeValues map = values.getObject("map", MapAttribute.MapAttributeValues.class);
final AbstractFeatureSourceLayer layer = (AbstractFeatureSourceLayer) map.getLayers().get(0);
final MapfishMapContext mapContext = AbstractMapfishSpringTest.createTestMapContext();
assertEquals("Default Line",
layer.getLayers(httpClientFactory, mapContext).get(0).getStyle().getDescription().getTitle().toString());
}
@Test
public void testAssignStyleMap() throws Exception {
this.configurationFactory.setDoValidation(false);
final Configuration config = configurationFactory.getConfig(getFile(BASE_DIR + "map/config.yaml"));
final Template template = config.getTemplate("main");
ProcessorDependencyGraph graph = template.getProcessorGraph();
List<ProcessorGraphNode> roots = graph.getRoots();
assertEquals(1, roots.size());
ProcessorGraphNode<Object, Object> rootNode = roots.get(0);
assertEquals(SetStyleProcessor.class, rootNode.getProcessor().getClass());
assertEquals(2, rootNode.getAllProcessors().size());
}
@Test
public void testAssignStyleTwoMaps() throws Exception {
this.configurationFactory.setDoValidation(false);
final Configuration config = configurationFactory.getConfig(getFile(BASE_DIR + "two_maps/config.yaml"));
final Template template = config.getTemplate("main");
ProcessorDependencyGraph graph = template.getProcessorGraph();
List<ProcessorGraphNode> roots = graph.getRoots();
assertEquals(2, roots.size());
ProcessorGraphNode<Object, Object> rootNode1 = roots.get(0);
assertEquals(SetStyleProcessor.class, rootNode1.getProcessor().getClass());
assertEquals(2, rootNode1.getAllProcessors().size());
ProcessorGraphNode<Object, Object> rootNode2 = roots.get(1);
assertEquals(SetStyleProcessor.class, rootNode2.getProcessor().getClass());
assertEquals(2, rootNode2.getAllProcessors().size());
}
}