Package com.google.refine.tests.importers

Source Code of com.google.refine.tests.importers.ImporterTest

package com.google.refine.tests.importers;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;

import org.json.JSONObject;
import org.mockito.Mockito;

import com.google.refine.ProjectMetadata;
import com.google.refine.RefineServlet;
import com.google.refine.importers.ImportingParserBase;
import com.google.refine.importers.tree.ImportColumnGroup;
import com.google.refine.importers.tree.TreeImportingParserBase;
import com.google.refine.importers.tree.XmlImportUtilities;
import com.google.refine.importing.ImportingJob;
import com.google.refine.importing.ImportingManager;
import com.google.refine.model.Project;
import com.google.refine.tests.RefineServletStub;
import com.google.refine.tests.RefineTest;

abstract class ImporterTest extends RefineTest {
    //mock dependencies
    protected Project project;
    protected ProjectMetadata metadata;
    protected ImportingJob job;
    protected RefineServlet servlet;
   
    protected JSONObject options;
   
    public void setUp(){
        //FIXME - should we try and use mock(Project.class); - seems unnecessary complexity

        servlet = new RefineServletStub();
        ImportingManager.initialize(servlet);
        project = new Project();
        metadata = new ProjectMetadata();
        job = ImportingManager.createJob();
       
        options = Mockito.mock(JSONObject.class);
    }
   
    public void tearDown(){
        project = null;
        metadata = null;
       
        ImportingManager.disposeJob(job.id);
        job = null;
       
        options = null;
    }
   
    protected void parseOneFile(ImportingParserBase parser, Reader reader) {
        parser.parseOneFile(
            project,
            metadata,
            job,
            "file-source",
            reader,
            -1,
            options,
            new ArrayList<Exception>()
        );
        project.update();
    }
   
    protected void parseOneFile(ImportingParserBase parser, InputStream inputStream) {
        parser.parseOneFile(
            project,
            metadata,
            job,
            "file-source",
            inputStream,
            -1,
            options,
            new ArrayList<Exception>()
        );
        project.update();
    }
   
    protected void parseOneFile(TreeImportingParserBase parser, Reader reader) {
        ImportColumnGroup rootColumnGroup = new ImportColumnGroup();
        parser.parseOneFile(
            project,
            metadata,
            job,
            "file-source",
            reader,
            rootColumnGroup,
            -1,
            options,
            new ArrayList<Exception>()
        );
        XmlImportUtilities.createColumnsFromImport(project, rootColumnGroup);
        project.columnModel.update();
    }
   
    protected void parseOneFile(TreeImportingParserBase parser, InputStream inputStream, JSONObject options) {
        parseOneInputStreamAsReader(parser, inputStream, options);
    }
   
    protected void parseOneInputStream(
            TreeImportingParserBase parser, InputStream inputStream, JSONObject options) {
        ImportColumnGroup rootColumnGroup = new ImportColumnGroup();
        List<Exception> exceptions = new ArrayList<Exception>();
       
        parser.parseOneFile(
            project,
            metadata,
            job,
            "file-source",
            inputStream,
            rootColumnGroup,
            -1,
            options,
            exceptions
        );
        postProcessProject(project, rootColumnGroup, exceptions);
    }

    protected void parseOneInputStreamAsReader(
            TreeImportingParserBase parser, InputStream inputStream, JSONObject options) {
        ImportColumnGroup rootColumnGroup = new ImportColumnGroup();
        List<Exception> exceptions = new ArrayList<Exception>();
       
        Reader reader = new InputStreamReader(inputStream);
        parser.parseOneFile(
            project,
            metadata,
            job,
            "file-source",
            reader,
            rootColumnGroup,
            -1,
            options,
            exceptions
        );
        postProcessProject(project, rootColumnGroup, exceptions);
       
        try {
            reader.close();
        } catch (IOException e) {
            //ignore errors on close
        }
    }
   
    protected void postProcessProject(
        Project project, ImportColumnGroup rootColumnGroup, List<Exception> exceptions) {
       
        XmlImportUtilities.createColumnsFromImport(project, rootColumnGroup);
        project.update();
       
        for (Exception e : exceptions) {
            e.printStackTrace();
        }
    }
}
TOP

Related Classes of com.google.refine.tests.importers.ImporterTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.