/** execute map reduce */
  private void executeMapReduce() throws Exception {
    String strMap = textMap.getText();
    String strReduce = textReduce.getText();
    String strFinilize = textFinalize.getText();
    String strOutputTarget = textOutputTarget.getText();
    MapReduceCommand.OutputType outputType =
        (MapReduceCommand.OutputType) comboOutputType.getData(comboOutputType.getText());

    DBObject dbQuery = null;
    if (!"".equals(textQuery.getText())) dbQuery = (DBObject) JSON.parse(textQuery.getText());

    DBObject dbSort = null;
    if (!"".equals(textSort.getText())) dbSort = (DBObject) JSON.parse(textSort.getText());

    // 쿼리 합니다.
    DBCollection dbCol = MongoDBQuery.findCollection(userDB, initColName);
    MapReduceCommand mrCmd =
        new MapReduceCommand(dbCol, strMap, strReduce, strOutputTarget, outputType, dbQuery);
    if (!"".equals(strFinilize)) mrCmd.setFinalize(strFinilize);
    if (dbSort != null) mrCmd.setSort(dbSort);
    if (getLimit() > 0) mrCmd.setLimit(getLimit());
    if (btnJsMode.getSelection()) mrCmd.addExtraOption("jsMode", true);

    final BasicDBObject searchObj = (BasicDBObject) mrCmd.toDBObject();
    if (btnSharded.getSelection()) ((BasicDBObject) searchObj.get("out")).put("sharded", true);
    if (btnNoneAtomic.getSelection()) ((BasicDBObject) searchObj.get("out")).put("nonAtomic", true);

    goMapReduce(dbCol, searchObj, outputType);
  }