Package edu.isi.karma.controller.command.worksheet

Source Code of edu.isi.karma.controller.command.worksheet.SetWorksheetPropertiesCommand

/*******************************************************************************
* Copyright 2012 University of Southern California
*
* Licensed 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.
*
* This code was developed by the Information Integration Group as part
* of the Karma project at the Information Sciences Institute of the
* University of Southern California.  For more information, publications,
* and related projects, please see: http://www.isi.edu/integration
******************************************************************************/

package edu.isi.karma.controller.command.worksheet;

import org.json.JSONException;
import org.json.JSONObject;

import edu.isi.karma.common.HttpMethods;
import edu.isi.karma.controller.command.CommandException;
import edu.isi.karma.controller.command.CommandType;
import edu.isi.karma.controller.command.WorksheetCommand;
import edu.isi.karma.controller.update.ErrorUpdate;
import edu.isi.karma.controller.update.InfoUpdate;
import edu.isi.karma.controller.update.UpdateContainer;
import edu.isi.karma.rep.Worksheet;
import edu.isi.karma.rep.Workspace;
import edu.isi.karma.rep.metadata.WorksheetProperties;
import edu.isi.karma.rep.metadata.WorksheetProperties.Property;

public class SetWorksheetPropertiesCommand extends WorksheetCommand {
  final private String properties;
  private Worksheet worksheet;

  public SetWorksheetPropertiesCommand(String id, String worksheetId, String properties) {
    super(id, worksheetId);
    this.properties = properties;
   
    addTag(CommandTag.Modeling);
  }

  @Override
  public String getCommandName() {
    return this.getClass().getSimpleName();
  }

  @Override
  public String getTitle() {
    return "Set Worksheet Properties";
  }

  @Override
  public String getDescription() {
    return worksheet.getTitle();
  }

  @Override
  public CommandType getCommandType() {
    return CommandType.notUndoable;
  }

  @Override
  public UpdateContainer doIt(Workspace workspace) throws CommandException {
    worksheet = workspace.getWorksheet(worksheetId);
   
    JSONObject propertiesJson = null;
    try {
      propertiesJson = new JSONObject(properties);
      WorksheetProperties props = worksheet.getMetadataContainer().getWorksheetProperties();
      if (props == null) {
        props = new WorksheetProperties();
        worksheet.getMetadataContainer().setWorksheetProperties(props);
      }
     
      // Parse the properties and set WorksheetProperties data structure
      String graphLabel = propertiesJson.getString(Property.graphLabel.name());
      if (!graphLabel.trim().isEmpty()) {
        props.setPropertyValue(Property.graphLabel, graphLabel);
        props.setPropertyValue(Property.graphName, WorksheetProperties.createDefaultGraphName(graphLabel));
      }
     
      if (propertiesJson.getBoolean(Property.hasServiceProperties.name())) {
        props.setHasServiceProperties(true);
        // Service URL
        props.setPropertyValue(Property.serviceUrl,
            propertiesJson.getString(Property.serviceUrl.name()));
        // Service method
        props.setPropertyValue(Property.serviceRequestMethod,
            propertiesJson.getString(Property.serviceRequestMethod.name()));
        // Set the service invocation style if http method is POST
        if (propertiesJson.getString(Property.serviceRequestMethod.name())
            .equals(HttpMethods.POST.name())) {
          props.setPropertyValue(Property.serviceDataPostMethod,
              propertiesJson.getString(Property.serviceDataPostMethod.name()));
        }
      }
      if (propertiesJson.getBoolean("hasPrefix")) {
        props.setPropertyValue(Property.prefix,
            propertiesJson.getString(Property.prefix.name()));
      }
      if (propertiesJson.getBoolean("hasBaseURI")) {
        props.setPropertyValue(Property.baseURI,
            propertiesJson.getString(Property.baseURI.name()));
      }
    } catch (JSONException e) {
      e.printStackTrace();
      return new UpdateContainer(new ErrorUpdate("Malformed properties object received"));
    }
   
    return new UpdateContainer(new InfoUpdate("Properties set successfully"));
  }

  @Override
  public UpdateContainer undoIt(Workspace workspace) {
    // Not required
    return null;
  }

}
TOP

Related Classes of edu.isi.karma.controller.command.worksheet.SetWorksheetPropertiesCommand

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.