001/* 002 * (C) Copyright 2012 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 * 016 * Contributors: 017 * Andrei Nechaev 018 */ 019package org.nuxeo.ecm.csv.core.operation; 020 021import org.nuxeo.ecm.automation.core.Constants; 022import org.nuxeo.ecm.automation.core.annotations.Context; 023import org.nuxeo.ecm.automation.core.annotations.Operation; 024import org.nuxeo.ecm.automation.core.annotations.OperationMethod; 025import org.nuxeo.ecm.automation.core.annotations.Param; 026import org.nuxeo.ecm.core.api.CoreSession; 027import org.nuxeo.ecm.csv.core.CSVImporter; 028import org.nuxeo.ecm.csv.core.CSVImporterOptions; 029import org.nuxeo.ecm.csv.core.CSVImporterOptions.ImportMode; 030import org.nuxeo.runtime.api.Framework; 031 032import java.io.File; 033 034@Operation( 035 id = CSVImportOperation.ID, 036 category = Constants.CAT_DOCUMENT, 037 label = "Import" 038) 039public class CSVImportOperation { 040 public static final String ID = "CSV.Import"; 041 042 @Context 043 protected CoreSession mSession; 044 045 @Param(name = "path") 046 protected String mPath; 047 048 @Param(name = "sendReport", required = false) 049 protected boolean mSendReport; 050 051 @Param(name = "documentMode", required = false) 052 protected boolean mDocumentMode; 053 054 @OperationMethod 055 public String importCSV(File file) { 056 ImportMode importMode = mDocumentMode ? ImportMode.IMPORT : ImportMode.CREATE; 057 CSVImporterOptions options = new CSVImporterOptions.Builder().sendEmail(mSendReport) 058 .importMode(importMode) 059 .build(); 060 061 CSVImporter csvImporter = Framework.getService(CSVImporter.class); 062 return csvImporter.launchImport(mSession, mPath, file, file.getName(), options); 063 } 064 065 @OperationMethod 066 public String getStatus(String importID) { 067 if (importID == null || importID.isEmpty()) { 068 return null; 069 } 070 CSVImporter csvImporter = Framework.getLocalService(CSVImporter.class); 071 return csvImporter.getImportStatus(importID).toString(); 072 } 073}