org.agnitas.beans.impl.ImportProfileImpl.java Source code

Java tutorial

Introduction

Here is the source code for org.agnitas.beans.impl.ImportProfileImpl.java

Source

/*********************************************************************************
 * The contents of this file are subject to the Common Public Attribution
 * License Version 1.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.openemm.org/cpal1.html. The License is based on the Mozilla
 * Public License Version 1.1 but Sections 14 and 15 have been added to cover
 * use of software over a computer network and provide for limited attribution
 * for the Original Developer. In addition, Exhibit A has been modified to be
 * consistent with Exhibit B.
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
 * the specific language governing rights and limitations under the License.
 *
 * The Original Code is OpenEMM.
 * The Original Developer is the Initial Developer.
 * The Initial Developer of the Original Code is AGNITAS AG. All portions of
 * the code written by AGNITAS AG are Copyright (c) 2009 AGNITAS AG. All Rights
 * Reserved.
 *
 * Contributor(s): AGNITAS AG. 
 ********************************************************************************/

package org.agnitas.beans.impl;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.agnitas.beans.ColumnMapping;
import org.agnitas.beans.ImportProfile;
import org.agnitas.util.MapUtils;
import org.apache.commons.lang.StringUtils;

/**
 * @author Vyacheslav Stepanov
 */
public class ImportProfileImpl implements ImportProfile {
    private static final long serialVersionUID = 6639195246464468803L;

    protected int id;
    protected int adminId;
    protected int companyId;
    protected String name;
    protected int separator;
    protected int textRecognitionChar;
    protected int charset;
    protected int dateFormat;
    protected int importMode;
    protected int checkForDuplicates;
    protected int nullValuesAction;
    protected String keyColumn;
    protected boolean extendedEmailCheck;
    protected Map<String, Integer> genderMapping;
    protected List<ColumnMapping> columnMapping;
    protected String mailForReport;
    protected int defaultMailType;
    private boolean updateAllDuplicates;
    private int importId;

    private List<String> keyColumns;

    public ImportProfileImpl() {
        genderMapping = Collections.synchronizedMap(new HashMap<String, Integer>());
        columnMapping = Collections.synchronizedList(new ArrayList<ColumnMapping>());
        keyColumns = new ArrayList<String>();
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getAdminId() {
        return adminId;
    }

    public void setAdminId(int adminId) {
        this.adminId = adminId;
    }

    public int getCompanyId() {
        return companyId;
    }

    public void setCompanyId(int companyId) {
        this.companyId = companyId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getSeparator() {
        return separator;
    }

    public void setSeparator(int separator) {
        this.separator = separator;
    }

    public int getTextRecognitionChar() {
        return textRecognitionChar;
    }

    public void setTextRecognitionChar(int textRecognitionChar) {
        this.textRecognitionChar = textRecognitionChar;
    }

    public int getCharset() {
        return charset;
    }

    public void setCharset(int charset) {
        this.charset = charset;
    }

    public int getDateFormat() {
        return dateFormat;
    }

    public void setDateFormat(int dateFormat) {
        this.dateFormat = dateFormat;
    }

    public int getImportMode() {
        return importMode;
    }

    public void setImportMode(int importMode) {
        this.importMode = importMode;
    }

    public int getCheckForDuplicates() {
        return checkForDuplicates;
    }

    public void setCheckForDuplicates(int checkForDuplicates) {
        this.checkForDuplicates = checkForDuplicates;
    }

    public int getNullValuesAction() {
        return nullValuesAction;
    }

    public void setNullValuesAction(int nullValuesAction) {
        this.nullValuesAction = nullValuesAction;
    }

    public String getKeyColumn() {
        return keyColumn;
    }

    public void setKeyColumn(String keyColumn) {
        this.keyColumn = keyColumn;
    }

    public boolean getExtendedEmailCheck() {
        return extendedEmailCheck;
    }

    public void setExtendedEmailCheck(boolean extendedEmailCheck) {
        this.extendedEmailCheck = extendedEmailCheck;
    }

    public Map<String, Integer> getGenderMapping() {
        return genderMapping;
    }

    public void setGenderMapping(Map<String, Integer> genderMapping) {
        this.genderMapping = genderMapping;
    }

    public List<ColumnMapping> getColumnMapping() {
        return columnMapping;
    }

    public void setColumnMapping(List<ColumnMapping> columnMapping) {
        this.columnMapping = columnMapping;
    }

    public String getMailForReport() {
        return mailForReport;
    }

    public void setMailForReport(String mailForReport) {
        this.mailForReport = mailForReport;
    }

    public int getDefaultMailType() {
        return defaultMailType;
    }

    public void setDefaultMailType(int defaultMailType) {
        this.defaultMailType = defaultMailType;
    }

    @Override
    public boolean equals(Object profileObject) {
        if (!(profileObject instanceof ImportProfile)) {
            return false;
        }
        ImportProfile profile = (ImportProfile) profileObject;

        if (!StringUtils.equals(name, profile.getName())) {
            return false;
        }
        if (!StringUtils.equals(mailForReport, profile.getMailForReport())) {
            return false;
        }
        if (!StringUtils.equals(keyColumn, profile.getKeyColumn())) {
            return false;
        }
        return id == profile.getId() && adminId == profile.getAdminId() && companyId == profile.getCompanyId()
                && separator == profile.getSeparator() && textRecognitionChar == profile.getTextRecognitionChar()
                && charset == profile.getCharset() && dateFormat == profile.getDateFormat()
                && importMode == profile.getImportMode() && checkForDuplicates == profile.getCheckForDuplicates()
                && nullValuesAction == profile.getNullValuesAction()
                && extendedEmailCheck == profile.getExtendedEmailCheck()
                && defaultMailType == profile.getDefaultMailType()
                && updateAllDuplicates == profile.getUpdateAllDuplicates();
    }

    public Integer getGenderValueByFieldValue(String fieldValue) {
        if (isParsableToInt(fieldValue)) {
            return Integer.valueOf(fieldValue);
        } else {
            return genderMapping.get(fieldValue);
        }
    }

    /**
     * returns false on adding duplicate entries
     */
    public boolean addGenderMappingSequence(String stringGenderSequence, int intGender) {
        if (StringUtils.isEmpty(stringGenderSequence)) {
            return false;
        } else {
            String[] genderTokens = stringGenderSequence.split(",");

            // Check if any token is already set
            for (String genderToken : genderTokens) {
                if (StringUtils.isNotBlank(genderToken) && genderMapping.containsKey(genderToken.trim())) {
                    return false;
                }
            }

            for (String genderToken : genderTokens) {
                if (StringUtils.isNotBlank(genderToken)) {
                    genderMapping.put(genderToken.trim(), intGender);
                }
            }

            return true;
        }
    }

    private boolean isParsableToInt(String i) {
        try {
            Integer.parseInt(i);
            return true;
        } catch (NumberFormatException nfe) {
            return false;
        }
    }

    public boolean getUpdateAllDuplicates() {
        return updateAllDuplicates;
    }

    public void setUpdateAllDuplicates(boolean updateAllDuplicates) {
        this.updateAllDuplicates = updateAllDuplicates;
    }

    public int getImportId() {
        return importId;
    }

    public void setImportId(int importId) {
        this.importId = importId;
    }

    @Override
    public Map<String, Integer> getGenderMappingJoined() {
        return MapUtils.sortByValues(MapUtils.joinStringKeysByValue(genderMapping, ", "));
    }

    public List<String> getKeyColumns() {
        return keyColumns;
    }

    @Override
    public void setKeyColumns(List<String> keyColumns) {
        this.keyColumns.clear();
        this.keyColumns.addAll(keyColumns);
    }

    public boolean keyColumnsContainsCustomerId() {
        for (String column : keyColumns) {
            if ("customer_id".equalsIgnoreCase(column)) {
                return true;
            }
        }
        return false;
    }
}