Example usage for org.apache.solr.handler.dataimport Context getAllEntityFields

List of usage examples for org.apache.solr.handler.dataimport Context getAllEntityFields

Introduction

In this page you can find the example usage for org.apache.solr.handler.dataimport Context getAllEntityFields.

Prototype

public abstract List<Map<String, String>> getAllEntityFields();

Source Link

Document

Returns all the fields put into an entity.

Usage

From source file:de.dlr.knowledgefinder.dataimport.utils.transformer.ArrayToStringTransformer.java

License:Apache License

@Override
public Object transformRow(Map<String, Object> row, Context context) {

    for (Map<String, String> map : context.getAllEntityFields()) {

        String column = map.get(DataImporter.COLUMN);
        String source = map.get(ARRAY_SOURCE_DATA_FIELD);

        if (source != null && row.containsKey(source) && row.get(source) != null) {
            try {
                String result = "";
                if (row.get(source) instanceof Object[]) {
                    Object[] array = (Object[]) row.get(source);
                    result = StringUtils.join(array, ", ");
                } else
                    result = row.get(source).toString();
                row.put(column, result);
            } catch (Exception e) {
                LOG.warn(e.toString());/*  ww  w .  j  ava 2  s  .com*/
            }
        }
    }
    return row;
}

From source file:de.dlr.knowledgefinder.dataimport.utils.transformer.AuthorFormatingTransformer.java

License:Apache License

@Override
public Object transformRow(Map<String, Object> row, Context context) {
    for (Map<String, String> map : context.getAllEntityFields()) {
        String boolStr = map.get(BOOL_FORMAT_DATA_FIELD);
        String columnField = map.get(DataImporter.COLUMN);
        String srcCol = map.get(SRC_COL);

        if (srcCol == null) {
            srcCol = columnField;/*w ww  . java2s  . c om*/
        }

        if (boolStr == null || !boolStr.equalsIgnoreCase("true") || row.get(srcCol) == null)
            continue;

        Object currentValueOfTheSourceField = row.get(srcCol);
        List<Object> listOfCurrentValues = new ArrayList<Object>();

        if (currentValueOfTheSourceField == null)
            return row;

        if (currentValueOfTheSourceField instanceof Object[])
            listOfCurrentValues.addAll(Arrays.asList((Object[]) currentValueOfTheSourceField));
        else
            listOfCurrentValues.add(currentValueOfTheSourceField);

        List<String> authors = new ArrayList<String>();
        for (Object value : listOfCurrentValues) {
            if (value instanceof Map<?, ?>) {

                String author = createAuthorString(value);

                if (author.length() > 0)
                    authors.add(author);
            }
        }
        Object[] arrayResult = authors.toArray(new Object[authors.size()]);
        row.put(columnField, arrayResult);
    }

    return row;
}

From source file:de.dlr.knowledgefinder.dataimport.utils.transformer.DateIncompleteFormatTransformer.java

License:Apache License

public Map<String, Object> transformRow(Map<String, Object> row, Context context) {

    for (Map<String, String> map : context.getAllEntityFields()) {

        String column = map.get(DataImporter.COLUMN);
        String startEnd = map.get(DATE_TIME_PARSE);
        String srcCol = map.get(SRC_COL_NAME);
        String dateRegex = map.get(DATE_INCOMPLETE_REGEX);

        if (startEnd == null || dateRegex == null)
            continue;
        if (!startEnd.equals(DATE_END) && !startEnd.equals(DATE_START))
            throw new IllegalArgumentException(DATE_TIME_PARSE + " muss be " + DATE_END + " or " + DATE_START
                    + "(Current value " + startEnd + ")");

        srcCol = srcCol == null ? column : srcCol;

        try {//from   w w w. j a  v a  2  s .co m
            Object currentRowValue = row.get(srcCol);
            if (currentRowValue instanceof Object[]) {
                List<Object> values = new ArrayList<Object>();
                values.addAll(Arrays.asList((Object[]) currentRowValue));

                List<Date> results = new ArrayList<Date>();
                for (Object input : values) {
                    results.add(process(input, startEnd, dateRegex));
                }
                row.put(column, results);
            } else {
                if (currentRowValue != null) {
                    row.put(column, process(currentRowValue, startEnd, dateRegex));
                }
            }
        } catch (Exception e) {
            LOG.warn(e.getMessage());
        }
    }
    return row;
}

From source file:de.dlr.knowledgefinder.dataimport.utils.transformer.DateToStringTransformer.java

License:Apache License

@Override
public Object transformRow(Map<String, Object> row, Context context) {

    for (Map<String, String> map : context.getAllEntityFields()) {

        String column = map.get(DataImporter.COLUMN);
        String pattern = map.get(FORMATING_PATTERN);
        String srcField = map.get(SRC_COL);
        String localeString = map.get(LOCALE_FIELD);
        Locale convertingLocale;/*  w  w  w .j  a  va 2 s . c o m*/

        if (pattern == null) {
            continue;
        }
        if (srcField == null) {
            srcField = column;
        }

        if (localeString == null) {
            convertingLocale = Locale.getDefault();
        } else {
            convertingLocale = new Locale(localeString);
        }

        Object columnContent = row.get(srcField);
        if (columnContent instanceof Date) {
            row.put(column, new SimpleDateFormat(pattern, convertingLocale).format((Date) columnContent));
        }
    }
    return row;
}

From source file:de.dlr.knowledgefinder.dataimport.utils.transformer.DictToStringTransformer.java

License:Apache License

@Override
public Object transformRow(Map<String, Object> row, Context context) {
    for (Map<String, String> map : context.getAllEntityFields()) {

        String formatPatternString = map.get(FORMAT_DATA_FIELD);
        String targetField = map.get(DataImporter.COLUMN);
        String sourceField = map.get(SOURCE);

        if (sourceField == null)
            sourceField = targetField;/*from w ww .j  a va 2  s .c  o  m*/

        Object origData = row.get(sourceField);

        if (formatPatternString == null || origData == null)
            continue;

        List<Object> values = new ArrayList<Object>();
        if (origData instanceof Object[])
            values.addAll(Arrays.asList((Object[]) origData));
        else
            values.add(origData);

        String[] formatPattern = formatPatternString.split("[\\{\\}]");
        List<String> formatedData = new ArrayList<String>();
        for (Object value : values) {

            if (value instanceof Map<?, ?>) {
                addStringToFormatedList(formatedData, formatPattern, value);
            }
        }
        Object[] arrayResult = formatedData.toArray(new Object[formatedData.size()]);
        row.put(targetField, arrayResult);
    }
    return row;
}

From source file:de.dlr.knowledgefinder.dataimport.utils.transformer.FilePathTransformer.java

License:Apache License

@Override
public Object transformRow(Map<String, Object> row, Context context) {
    for (Map<String, String> map : context.getAllEntityFields()) {
        String column = map.get(DataImporter.COLUMN);
        String pathPrefix = map.get(PATH_PREFIX_FIELD);
        String targetColumn = map.get(TARGET_COLUMN_FIELD);
        String suffix = map.get(SUFFIX_FIELD);
        String oldSuffix = map.get(OLD_SUFFIX_FIELD);
        String fileCol = map.get(FILE_NAME_COLUMN);

        fileCol = fileCol == null ? column : fileCol;

        if (pathPrefix == null || row.get(fileCol) == null)
            continue;

        String fileName = row.get(fileCol).toString();

        if (oldSuffix != null && !oldSuffix.equalsIgnoreCase("")) {
            fileName = fileName.replaceAll(oldSuffix + "[ \t]*$", suffix);
        } else if (suffix != null) {
            fileName += suffix;//from   ww  w.j a va  2 s .c o m
        }

        pathPrefix = pathPrefix.trim();
        fileName = fileName.trim();
        if (pathPrefix != "" && !pathPrefix.endsWith("/"))
            pathPrefix += "/";
        if (targetColumn == null)
            row.put(column, pathPrefix + fileName);
        else
            row.put(targetColumn, pathPrefix + fileName);
        LOG.info(pathPrefix + fileName);

    }
    return row;
}

From source file:de.dlr.knowledgefinder.dataimport.utils.transformer.FormatingStringTransformer.java

License:Apache License

@Override
public Object transformRow(Map<String, Object> row, Context context) {
    for (Map<String, String> map : context.getAllEntityFields()) {

        String formatPatternString = map.get(FORMAT_DATA_FIELD);
        String sourceField = map.get(SOURCE);
        String targetField = map.get(DataImporter.COLUMN);

        if (sourceField == null)
            sourceField = targetField;/*from   w  ww .  j a  va  2 s  .  co m*/

        Object origData = row.get(sourceField);

        if (formatPatternString == null || origData == null)
            continue;

        List<Object> values = new ArrayList<Object>();
        if (origData instanceof Object[])
            values.addAll(Arrays.asList((Object[]) origData));
        else
            values.add(origData);

        List<String> formatedData = new ArrayList<String>();
        for (Object value : values) {
            String formatedEntry = formatPatternString.replaceAll("\\{\\*}", value.toString());
            if (formatedEntry.length() > 0)
                formatedData.add(formatedEntry);
        }
        Object[] arrayResult = formatedData.toArray(new Object[formatedData.size()]);
        row.put(targetField, arrayResult);
    }
    return row;
}

From source file:de.dlr.knowledgefinder.dataimport.utils.transformer.IntToDateTransformer.java

License:Apache License

@Override
public Object transformRow(Map<String, Object> row, Context context) {

    for (Map<String, String> map : context.getAllEntityFields()) {

        String column = map.get(DataImporter.COLUMN);
        String boolStr = map.get(BOOL_CONVERT_DATA_FIELD);

        if (boolStr == null || !boolStr.equalsIgnoreCase("true") || row.get(column) == null)
            continue;

        try {/*from  ww  w . ja v a  2  s  .  c om*/
            int dateInSeconds = Integer.parseInt(row.get(column).toString());
            Date transformedDate = new Date(dateInSeconds * secondToMilisecondMultiplier);
            row.put(column, transformedDate);
        } catch (Exception e) {
            LOG.warn(e.getMessage());
        }
    }
    return row;
}

From source file:de.dlr.knowledgefinder.dataimport.utils.transformer.SelectLatestDateTransformer.java

License:Apache License

@Override
public Object transformRow(Map<String, Object> row, Context context) {

    for (Map<String, String> map : context.getAllEntityFields()) {

        String column = map.get(DataImporter.COLUMN);
        String sourcesStr = map.get(DATA_LIST_FIELD);

        if (sourcesStr == null)
            continue;

        String[] sources = sourcesStr.split(",");
        ArrayList<Date> dates = new ArrayList<Date>();
        for (int is = 0; is < sources.length; is++) {
            try {
                Object tmpVal = row.get(sources[is].trim());
                if (tmpVal != null && tmpVal.toString().length() > 0)
                    if (tmpVal instanceof Date)
                        dates.add((Date) tmpVal);
                    else
                        dates.add(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH)
                                .parse(tmpVal.toString()));
            } catch (Exception e) {
                LOG.warn(e.getMessage());
            }//  ww w  .  ja  v a 2 s  .c o m
        }
        if (dates.size() > 0) {
            Collections.sort(dates);
            row.put(column, dates.get(dates.size() - 1));
        } else {
            LOG.warn("There are no valid dates set");
        }

    }
    return row;
}

From source file:de.dlr.knowledgefinder.dataimport.utils.transformer.TrimTransformer.java

License:Apache License

@Override
public Object transformRow(Map<String, Object> row, Context context) {

    for (Map<String, String> map : context.getAllEntityFields()) {

        String column = map.get(DataImporter.COLUMN);
        String doTrim = map.get(TRIM_DATA_FIELD);

        if (Boolean.parseBoolean(doTrim) == true) {
            try {
                if (row.get(column) instanceof Object[]) {
                    Object[] array = (Object[]) row.get(column);
                    String[] result = new String[array.length];
                    for (int i = 0; i < array.length; i++) {
                        result[i] = array[i].toString().trim();
                    }//w  ww .j ava 2s  . co  m
                    row.put(column, result);
                } else
                    row.put(column, row.get(column).toString().trim());
            } catch (Exception e) {
                LOG.warn(e.toString());
            }
        }
    }
    return row;
}