All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.wadpam.open.io.Mardao1Extractor Maven / Gradle / Ivy

package com.wadpam.open.io;

import com.google.appengine.api.datastore.Key;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import net.sf.mardao.api.dao.Dao;
import net.sf.mardao.api.dao.DaoImpl;

/**
 *
 * @author os
 */
public class Mardao1Extractor implements Extractor {

    Map> daoHeaders = new HashMap>();

    @Override
    public Iterable getColumns(Object arg, Dao dao) {
        return dao.getColumnNames();
    }

    @Override
    public Map getValues(Object arg, Dao dao, Object entity) {
        net.sf.mardao.api.dao.CsvConverter converter = (net.sf.mardao.api.dao.CsvConverter) dao;
        final ArrayList columns = new ArrayList();
        for (String col : getColumns(arg, dao)) {
            columns.add(col);
        }
        final Map values = converter.getCsvColumnValues((DaoImpl) dao, columns.toArray(new String[columns.size()]), entity);
        
        // replace keys with id / name instead
        Object v;
        for (Entry entry : values.entrySet()) {
            v = entry.getValue();
            if (null != v && "com.google.appengine.api.datastore.Key".equals(v.getClass().getName())) {
                Key key = (Key) v;
                values.put(entry.getKey(), null != key.getName() ? key.getName() : key.getId());
            }
        }
        
        return values;
    }

    @Override
    public Map getHeaderNames(Object arg, Dao dao) {
        final Map map = daoHeaders.get(dao.getTableName());
        return null != map ? map : Collections.EMPTY_MAP;
    }
    
    public void setHeaderNames(Map headerNames, Dao dao) {
        daoHeaders.put(dao.getTableName(), headerNames);
    }

    @Override
    public String getTableName(Object arg, Dao dao) {
        return dao.getTableName();
    }

    @Override
    public Object postDao(Object arg, Object preExport, Object preDao, Dao dao) {
        return null;
    }

    @Override
    public Object postExport(Object arg, Object preExport, Dao[] daos) {
        return null;
    }

    @Override
    public Object preDao(Object arg, Object preExport, Dao dao) {
        return null;
    }

    @Override
    public Object preExport(Object arg, Dao[] daos) {
        return null;
    }

    @Override
    public Iterable queryIterable(Object arg, Dao dao, int offset, int limit) {
        return dao.xmlFindAll();
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy