//
// Copyright 2010 Cinch Logic Pty Ltd.
//
// http://www.chililog.com
//
// 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 org.chililog.server.workbench.workers;
import java.util.ArrayList;
import java.util.Map.Entry;
import org.chililog.server.common.ChiliLogException;
import org.chililog.server.data.RepositoryFieldConfigBO;
import org.chililog.server.data.RepositoryParserConfigBO;
import org.chililog.server.data.RepositoryParserConfigBO.AppliesTo;
import org.chililog.server.data.RepositoryParserConfigBO.ParseFieldErrorHandling;
/**
* <p>
* Repository Parser API Object
* </p>
*
* @author vibul
*
*/
public class RepositoryParserConfigAO extends AO {
private String _name;
private AppliesTo _appliesTo = AppliesTo.None;
private String _appliesToSourceFilter;
private String _appliesToHostFilter;
private String _className;
private long _maxKeywords = -1;
private ParseFieldErrorHandling _parseFieldErrorHandling = ParseFieldErrorHandling.SkipField;
private RepositoryFieldConfigAO[] _fields = null;
private RepositoryPropertyConfigAO[] _properties = null;
/**
* Basic constructor
*/
public RepositoryParserConfigAO() {
return;
}
/**
* Constructor that copies properties form the business object
*
* @param repoParserConfig
* Repository parser configuration business object
*/
public RepositoryParserConfigAO(RepositoryParserConfigBO repoParserConfig) {
_name = repoParserConfig.getName();
_appliesTo = repoParserConfig.getAppliesTo();
_appliesToSourceFilter = repoParserConfig.getAppliesToSourceFilter();
_appliesToHostFilter = repoParserConfig.getAppliesToHostFilter();
_className = repoParserConfig.getClassName();
_maxKeywords = repoParserConfig.getMaxKeywords();
_parseFieldErrorHandling = repoParserConfig.getParseFieldErrorHandling();
if (repoParserConfig.getFields() == null || repoParserConfig.getFields().isEmpty()) {
_fields = null;
} else {
ArrayList<RepositoryFieldConfigAO> fieldList = new ArrayList<RepositoryFieldConfigAO>();
for (RepositoryFieldConfigBO fieldInfo : repoParserConfig.getFields()) {
fieldList.add(new RepositoryFieldConfigAO(fieldInfo));
}
_fields = fieldList.toArray(new RepositoryFieldConfigAO[] {});
}
if (repoParserConfig.getProperties() == null || repoParserConfig.getProperties().isEmpty()) {
_properties = null;
} else {
ArrayList<RepositoryPropertyConfigAO> propertyList = new ArrayList<RepositoryPropertyConfigAO>();
for (Entry<String, String> e : repoParserConfig.getProperties().entrySet()) {
propertyList.add(new RepositoryPropertyConfigAO(e.getKey(), e.getValue()));
}
_properties = propertyList.toArray(new RepositoryPropertyConfigAO[] {});
}
return;
}
/**
* Updates the supplied business object with info from this api object
*
* @param repoParserConfig
* business object to update
* @throws ChiliLogException
*/
public void toBO(RepositoryParserConfigBO repoParserConfig) throws ChiliLogException {
repoParserConfig.setName(_name);
repoParserConfig.setAppliesTo(_appliesTo);
repoParserConfig.setAppliesToSourceFilter(_appliesToSourceFilter);
repoParserConfig.setAppliesToHostFilter(_appliesToHostFilter);
repoParserConfig.setClassName(_className);
repoParserConfig.setMaxKeywords(_maxKeywords);
repoParserConfig.setParseFieldErrorHandling(_parseFieldErrorHandling);
repoParserConfig.getFields().clear();
if (_fields != null && _fields.length > 0) {
for (RepositoryFieldConfigAO fieldInfo : _fields) {
RepositoryFieldConfigBO bo = new RepositoryFieldConfigBO();
fieldInfo.toBO(bo);
repoParserConfig.getFields().add(bo);
}
}
repoParserConfig.getProperties().clear();
if (_properties != null && _properties.length > 0) {
for (RepositoryPropertyConfigAO property : _properties) {
repoParserConfig.getProperties().put(property.getKey(), property.getValue());
}
}
return;
}
public String getName() {
return _name;
}
public void setName(String name) {
_name = name;
}
public AppliesTo getAppliesTo() {
return _appliesTo;
}
public void setAppliesTo(AppliesTo appliesTo) {
_appliesTo = appliesTo;
}
public String getAppliesToSourceFilter() {
return _appliesToSourceFilter;
}
public void setAppliesToSourceFilter(String appliesToSourceFilter) {
_appliesToSourceFilter = appliesToSourceFilter;
}
public String getAppliesToHostFilter() {
return _appliesToHostFilter;
}
public void setAppliesToHostFilter(String appliesToHostFilter) {
_appliesToHostFilter = appliesToHostFilter;
}
public String getClassName() {
return _className;
}
public void setClassName(String className) {
_className = className;
}
public long getMaxKeywords() {
return _maxKeywords;
}
public void setMaxKeywords(long maxKeywords) {
_maxKeywords = maxKeywords;
}
public ParseFieldErrorHandling getParseFieldErrorHandling() {
return _parseFieldErrorHandling;
}
public void setParseFieldErrorHandling(ParseFieldErrorHandling parseFieldErrorHandling) {
_parseFieldErrorHandling = parseFieldErrorHandling;
}
public RepositoryFieldConfigAO[] getFields() {
return _fields;
}
public void setFields(RepositoryFieldConfigAO[] fields) {
_fields = fields;
}
public RepositoryPropertyConfigAO[] getProperties() {
return _properties;
}
public void setProperties(RepositoryPropertyConfigAO[] properties) {
_properties = properties;
}
}