/*******************************************************************************
* Copyright 2011 André Rouél
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package net.sf.jacclog.service.importer.internal.parser;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import net.sf.jacclog.logformat.field.Field;
import net.sf.jacclog.logformat.field.RemoteHostField;
import net.sf.jacclog.logformat.field.RemoteLognameField;
import net.sf.jacclog.logformat.field.RemoteUserField;
import net.sf.jacclog.logformat.field.RequestFirstLineField;
public class TokenToFieldMapperTest {
private static final Logger LOGGER = LoggerFactory.getLogger(TokenToFieldMapperTest.class);
private void printResult(final Map<Field, String> map) {
LOGGER.info(">>>\nsize:" + map.size());
LOGGER.info("tokens={");
int i = 0;
for (final Entry<Field, String> e : map.entrySet()) {
LOGGER.info(" " + e.getKey() + "[" + i + "] = " + e.getValue());
i++;
}
LOGGER.info("}");
}
@Test
public void testParseCustomLogFormat() throws Exception {
final List<String> tokens = new ArrayList<String>();
tokens.add("First Token (remote host)");
tokens.add("Second Token (logname)");
tokens.add("Third Token (remote user)");
tokens.add("Forth Token (request first line)");
final List<Field> fields = new ArrayList<Field>();
fields.add(RemoteHostField.getInstance());
fields.add(RemoteLognameField.getInstance());
fields.add(RemoteUserField.getInstance());
fields.add(RequestFirstLineField.getInstance());
final Map<Field, String> map = TokenToFieldMapper.map(fields, tokens);
printResult(map);
Assert.assertEquals(4, map.size());
Assert.assertTrue(map.containsKey(RemoteHostField.getInstance()));
Assert.assertTrue(map.containsKey(RemoteLognameField.getInstance()));
Assert.assertTrue(map.containsKey(RemoteUserField.getInstance()));
Assert.assertTrue(map.containsKey(RequestFirstLineField.getInstance()));
Assert.assertSame(tokens.get(0), map.get(RemoteHostField.getInstance()));
Assert.assertSame(tokens.get(1), map.get(RemoteLognameField.getInstance()));
Assert.assertSame(tokens.get(2), map.get(RemoteUserField.getInstance()));
Assert.assertSame(tokens.get(3), map.get(RequestFirstLineField.getInstance()));
}
}