// Path: src/main/java/org/yy/mongodb/constant/MongoConstant.java
// public class MongoConstant {
// 
//   /**
//    * Connection per host.
//    */
//   public static final int CONNECTION_PER_HOST = 10;
// 
//   /**
//    * Threads allowed to block for connection multiplier.
//    */
//   public static final int THREADS_ALLOWED_TO_BLOCK = 5;
// 
//   /**
//    * Connection time out.
//    */
//   public static final int CONNECTION_TIME_OUT = 5000;
// 
//   /**
//    * Socket time out.
//    */
//   public static final int SOCKET_TIME_OUT = 10000;
// 
//   /**
//    * Thread will block waiting for a connection.
//    */
//   public static final int MAX_WAIT_TIME = 10000;
//   
//   /**
//    * Query order by 'asc'.
//    */
//   public static final int ORDER_ASC = -1;
// 
//   /**
//    * Query order by 'desc'.
//    */
//   public static final int ORDER_DESC = 1;
// 
// }
// 
// Path: src/main/java/org/yy/mongodb/exception/StatementException.java
// public class StatementException extends RuntimeException {
// 
//   private static final long serialVersionUID = 3988706952509457604L;
// 
//   private static final Logger logger = LoggerFactory.getLogger(StatementException.class);
// 
//   private String message;
// 
//   public StatementException(String message) {
//     super(message);
//     this.message = message;
//     logger.error("Mongodb orm statement error. Cause:  " + message);
//   }
// 
//   public StatementException(String message, Throwable e) {
//     super(message, e);
//     this.message = message;
//     logger.error("Mongodb orm statement error. Cause: " + message, e);
//   }
// 
//   @Override
//   public String getLocalizedMessage() {
//     return message;
//   }
// 
// }
// 
// Path: src/main/java/org/yy/mongodb/orm/engine/Config.java
// public interface Config extends Serializable {
// }
// 
// Path: src/main/java/org/yy/mongodb/orm/engine/entry/NodeEntry.java
// public class NodeEntry implements Serializable {
// 
//   private static final long serialVersionUID = -6974784211299835940L;
// 
//   /**
//    * Mapping id.
//    */
//   private String mappingId;
// 
//   /**
//    * Node parameter class type.
//    */
//   private Class<?> clazz;
// 
//   /**
//    * Node elements mapping entry.
//    */
//   private List<Entry> nodeMappings;
//   
//   /**
//    * Getting data into, and out of a mapped statement.
//    */
//   private TypeHandler<?> typeHandler;
//   
//   /**
//    * Mql node executor
//    */
//   private MqlExecutor<?> executor;
//   
//   public Object executorNode(String namespace, MqlMapConfiguration configuration, Object target) {
//     return executor.parser(namespace, configuration, this, target);
//   }
//   
//   public String getMappingId() {
//     return mappingId;
//   }
// 
//   public void setMappingId(String mappingId) {
//     this.mappingId = mappingId;
//   }
// 
//   public Class<?> getClazz() {
//     return clazz;
//   }
// 
//   public void setClazz(Class<?> clazz) {
//     this.clazz = clazz;
//   }
// 
//   public List<Entry> getNodeMappings() {
//     return nodeMappings;
//   }
// 
//   public void setNodeMappings(List<Entry> nodeMappings) {
//     this.nodeMappings = nodeMappings;
//   }
// 
//   public TypeHandler<?> getTypeHandler() {
//     return typeHandler;
//   }
// 
//   public void setTypeHandler(TypeHandler<?> typeHandler) {
//     this.typeHandler = typeHandler;
//   }
// 
//   public void setExecutor(MqlExecutor<?> executor) {
//     this.executor = executor;
//   }
// 
// }


import org.apache.commons.lang3.StringUtils;
import org.yy.mongodb.constant.MongoConstant;
import org.yy.mongodb.exception.StatementException;
import org.yy.mongodb.orm.engine.Config;
import org.yy.mongodb.orm.engine.entry.NodeEntry;

package org.yy.mongodb.orm.engine.config;


/**
 * XML Select config
 * @author yy
 */
public class SelectConfig implements Config {

  private static final long serialVersionUID = 8093241263645912723L;
  
  /**
   * ORM config namespace.
   */
  private String namespace;
  
  /**
   * ORM query config id.
   */
  private String id;

  /**
   * Mongo db collection.
   */
  private String collection;

  /**
   * Query parameter.
   */
  private NodeEntry query;
  
  /**
   * Query return field.
   */
  private NodeEntry field;
  
  /**
   * Query order.
   */
  private NodeEntry order;

  public SelectConfig(String namespace, String id, String collection) {

// Path: src/main/java/org/yy/mongodb/constant/MongoConstant.java
// public class MongoConstant {
// 
//   /**
//    * Connection per host.
//    */
//   public static final int CONNECTION_PER_HOST = 10;
// 
//   /**
//    * Threads allowed to block for connection multiplier.
//    */
//   public static final int THREADS_ALLOWED_TO_BLOCK = 5;
// 
//   /**
//    * Connection time out.
//    */
//   public static final int CONNECTION_TIME_OUT = 5000;
// 
//   /**
//    * Socket time out.
//    */
//   public static final int SOCKET_TIME_OUT = 10000;
// 
//   /**
//    * Thread will block waiting for a connection.
//    */
//   public static final int MAX_WAIT_TIME = 10000;
//   
//   /**
//    * Query order by 'asc'.
//    */
//   public static final int ORDER_ASC = -1;
// 
//   /**
//    * Query order by 'desc'.
//    */
//   public static final int ORDER_DESC = 1;
// 
// }
// 
// Path: src/main/java/org/yy/mongodb/exception/StatementException.java
// public class StatementException extends RuntimeException {
// 
//   private static final long serialVersionUID = 3988706952509457604L;
// 
//   private static final Logger logger = LoggerFactory.getLogger(StatementException.class);
// 
//   private String message;
// 
//   public StatementException(String message) {
//     super(message);
//     this.message = message;
//     logger.error("Mongodb orm statement error. Cause:  " + message);
//   }
// 
//   public StatementException(String message, Throwable e) {
//     super(message, e);
//     this.message = message;
//     logger.error("Mongodb orm statement error. Cause: " + message, e);
//   }
// 
//   @Override
//   public String getLocalizedMessage() {
//     return message;
//   }
// 
// }
// 
// Path: src/main/java/org/yy/mongodb/orm/engine/Config.java
// public interface Config extends Serializable {
// }
// 
// Path: src/main/java/org/yy/mongodb/orm/engine/entry/NodeEntry.java
// public class NodeEntry implements Serializable {
// 
//   private static final long serialVersionUID = -6974784211299835940L;
// 
//   /**
//    * Mapping id.
//    */
//   private String mappingId;
// 
//   /**
//    * Node parameter class type.
//    */
//   private Class<?> clazz;
// 
//   /**
//    * Node elements mapping entry.
//    */
//   private List<Entry> nodeMappings;
//   
//   /**
//    * Getting data into, and out of a mapped statement.
//    */
//   private TypeHandler<?> typeHandler;
//   
//   /**
//    * Mql node executor
//    */
//   private MqlExecutor<?> executor;
//   
//   public Object executorNode(String namespace, MqlMapConfiguration configuration, Object target) {
//     return executor.parser(namespace, configuration, this, target);
//   }
//   
//   public String getMappingId() {
//     return mappingId;
//   }
// 
//   public void setMappingId(String mappingId) {
//     this.mappingId = mappingId;
//   }
// 
//   public Class<?> getClazz() {
//     return clazz;
//   }
// 
//   public void setClazz(Class<?> clazz) {
//     this.clazz = clazz;
//   }
// 
//   public List<Entry> getNodeMappings() {
//     return nodeMappings;
//   }
// 
//   public void setNodeMappings(List<Entry> nodeMappings) {
//     this.nodeMappings = nodeMappings;
//   }
// 
//   public TypeHandler<?> getTypeHandler() {
//     return typeHandler;
//   }
// 
//   public void setTypeHandler(TypeHandler<?> typeHandler) {
//     this.typeHandler = typeHandler;
//   }
// 
//   public void setExecutor(MqlExecutor<?> executor) {
//     this.executor = executor;
//   }
// 
// }


// Path: src/main/java/org/yy/mongodb/orm/engine/config/SelectConfig.java
import org.apache.commons.lang3.StringUtils;
import org.yy.mongodb.constant.MongoConstant;
import org.yy.mongodb.exception.StatementException;
import org.yy.mongodb.orm.engine.Config;
import org.yy.mongodb.orm.engine.entry.NodeEntry;

package org.yy.mongodb.orm.engine.config;


/**
 * XML Select config
 * @author yy
 */
public class SelectConfig implements Config {

  private static final long serialVersionUID = 8093241263645912723L;
  
  /**
   * ORM config namespace.
   */
  private String namespace;
  
  /**
   * ORM query config id.
   */
  private String id;

  /**
   * Mongo db collection.
   */
  private String collection;

  /**
   * Query parameter.
   */
  private NodeEntry query;
  
  /**
   * Query return field.
   */
  private NodeEntry field;
  
  /**
   * Query order.
   */
  private NodeEntry order;

  public SelectConfig(String namespace, String id, String collection) {

    this.namespace = namespace;
