/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.solr.handler.dataimport; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.solr.common.util.ContentStream; import org.apache.solr.common.util.StrUtils; import org.apache.solr.request.SolrQueryRequest; public class RequestInfo { private final String command; private final boolean debug; private final boolean syncMode; private final boolean commit; private final boolean optimize; private final int start; private final long rows; private final boolean clean; private final List<String> entitiesToRun; private final Map<String,Object> rawParams; private final String configFile; private final String dataConfig; private final SolrQueryRequest request; //TODO: find a different home for these two... private final ContentStream contentStream; private final DebugInfo debugInfo; public RequestInfo(SolrQueryRequest request, Map<String,Object> requestParams, ContentStream stream) { this.request = request; this.contentStream = stream; if (requestParams.containsKey("command")) { command = (String) requestParams.get("command"); } else { command = null; } boolean debugMode = StrUtils.parseBool((String) requestParams.get("debug"), false); if (debugMode) { debug = true; debugInfo = new DebugInfo(requestParams); } else { debug = false; debugInfo = null; } if (requestParams.containsKey("clean")) { clean = StrUtils.parseBool( (String) requestParams.get("clean"), true); } else if (DataImporter.DELTA_IMPORT_CMD.equals(command) || DataImporter.IMPORT_CMD.equals(command)) { clean = false; } else { clean = debug ? false : true; } optimize = StrUtils.parseBool((String) requestParams.get("optimize"), false); if(optimize) { commit = true; } else { commit = StrUtils.parseBool( (String) requestParams.get("commit"), (debug ? false : true)); } if (requestParams.containsKey("rows")) { rows = Integer.parseInt((String) requestParams.get("rows")); } else { rows = debug ? 10 : Long.MAX_VALUE; } if (requestParams.containsKey("start")) { start = Integer.parseInt((String) requestParams.get("start")); } else { start = 0; } syncMode = StrUtils.parseBool((String) requestParams.get("synchronous"), false); Object o = requestParams.get("entity"); List<String> modifiableEntities = null; if(o != null) { if (o instanceof String) { modifiableEntities = new ArrayList<>(); modifiableEntities.add((String) o); } else if (o instanceof List<?>) { @SuppressWarnings("unchecked") List<String> modifiableEntities1 = new ArrayList<>((List<String>) o); modifiableEntities = modifiableEntities1; } entitiesToRun = Collections.unmodifiableList(modifiableEntities); } else { entitiesToRun = null; } String configFileParam = (String) requestParams.get("config"); configFile = configFileParam; String dataConfigParam = (String) requestParams.get("dataConfig"); if (dataConfigParam != null && dataConfigParam.trim().length() == 0) { // Empty data-config param is not valid, change it to null dataConfigParam = null; } dataConfig = dataConfigParam; this.rawParams = Collections.unmodifiableMap(new HashMap<>(requestParams)); } public String getCommand() { return command; } public boolean isDebug() { return debug; } public boolean isSyncMode() { return syncMode; } public boolean isCommit() { return commit; } public boolean isOptimize() { return optimize; } public int getStart() { return start; } public long getRows() { return rows; } public boolean isClean() { return clean; } /** * Returns null if we are to run all entities, otherwise just run the entities named in the list. */ public List<String> getEntitiesToRun() { return entitiesToRun; } public String getDataConfig() { return dataConfig; } public Map<String,Object> getRawParams() { return rawParams; } public ContentStream getContentStream() { return contentStream; } public DebugInfo getDebugInfo() { return debugInfo; } public String getConfigFile() { return configFile; } public SolrQueryRequest getRequest() { return request; } }