Package edu.isi.karma.controller.update

Source Code of edu.isi.karma.controller.update.AllWorksheetHeadersUpdate

package edu.isi.karma.controller.update;

import java.io.PrintWriter;
import java.util.List;

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

import edu.isi.karma.rep.Worksheet;
import edu.isi.karma.rep.alignment.SemanticTypes;
import edu.isi.karma.view.VHNode;
import edu.isi.karma.view.VWorksheet;
import edu.isi.karma.view.VWorkspace;

public class AllWorksheetHeadersUpdate extends AbstractUpdate {
  private String worksheetId;
  private boolean deleteAfterGenerate;
  private enum JsonKeys {
    worksheetId, columns, name, id, visible, hideable, children
  }
 
  public AllWorksheetHeadersUpdate(String worksheetId, boolean deleteAfterGenerate) {
    super();
    this.worksheetId = worksheetId;
    this.deleteAfterGenerate = deleteAfterGenerate;
  }
 
  @Override
  public void generateJson(String prefix, PrintWriter pw,
      VWorkspace vWorkspace) {
    VWorksheet vWorksheet =  vWorkspace.getViewFactory().getVWorksheetByWorksheetId(worksheetId);
   
    try {
      JSONObject response = new JSONObject();
      response.put(JsonKeys.worksheetId.name(), worksheetId);
      response.put(AbstractUpdate.GenericJsonKeys.updateType.name(),
          this.getClass().getSimpleName());
     
      Worksheet wk = vWorksheet.getWorksheet();
      List<VHNode> viewHeaders = vWorksheet.getHeaderViewNodes();
     
      JSONArray columns = getColumnsJsonArray(viewHeaders, wk.getSemanticTypes());
      response.put(JsonKeys.columns.name(), columns);
     
      pw.println(response.toString());
      if (deleteAfterGenerate) {
        vWorkspace.getWorkspace().getFactory().removeWorksheet(wk.getId(), vWorkspace.getWorkspace().getCommandHistory());
        vWorkspace.getViewFactory().removeWorksheet(wk.getId());
      }
    } catch (JSONException e) {
      e.printStackTrace();
    }

  }
 
  private JSONArray getColumnsJsonArray(List<VHNode> viewHeaders, SemanticTypes semTypes) {
    JSONArray columns = new JSONArray();
    for(VHNode headerNode : viewHeaders) {
      JSONObject column = new JSONObject();
      column.put(JsonKeys.id.name(), headerNode.getId());
     
   
      column.put(JsonKeys.name.name(), headerNode.getColumnName());
      column.put(JsonKeys.visible.name(), headerNode.isVisible());
      boolean hideable = (semTypes.getSemanticTypeForHNodeId(headerNode.getId()) == null) ? true : false;
     
     
      if(headerNode.hasNestedTable()) {
        JSONArray children = getColumnsJsonArray(headerNode.getNestedNodes(), semTypes);
        if (children.length() > 0)
          column.put(JsonKeys.children.name(), children);
        if(hideable) {
          //check if any of the children are not hideable, then this is not hideable
          for(int i=0; i<children.length(); i++) {
            JSONObject child = children.getJSONObject(i);
            if(child.getBoolean("hideable") == false) {
              hideable = false;
              break;
            }
          }
        }
      }
     
      column.put(JsonKeys.hideable.name(), hideable);
      columns.put(column);
    }
    return columns;
  }
 
  public boolean equals(Object o) {
    if (o instanceof AllWorksheetHeadersUpdate) {
      AllWorksheetHeadersUpdate t = (AllWorksheetHeadersUpdate)o;
      return t.worksheetId.equals(worksheetId);
    }
    return false;
  }

}
TOP

Related Classes of edu.isi.karma.controller.update.AllWorksheetHeadersUpdate

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.