public static String getSqlMapCondition(List<Property> properties, String ownerTableNameAs) {
   // List<Property> properties=getSearchTextFieldPropertiesFromSimple(clazz);
   StringBuilder sb = new StringBuilder();
   for (Property property : properties) {
     String propertyUncapSafeName = NameHelper.uncapSafeName(property);
     String columnName = ColumnStereotypeHelper.getApplyColumn_name(property);
     String operator = getSearchOperator(property);
     Type propertyType = property.getType();
     String propertyTypeName = propertyType.getName();
     String compareColumnName = ownerTableNameAs + "." + columnName;
     String comparePropertyName = propertyUncapSafeName;
     if (ClassHelper.isSimple(property)) {
       sb.append(
           getSqlMapSearchStatement(
               compareColumnName, comparePropertyName, propertyTypeName, operator, property));
     } else if (ClassHelper.isOneToOne(property) || ClassHelper.isManyToOne(property)) {
       Class relTargetClass = (Class) propertyType;
       // String relTargetClassCommentName=TypeHelper.getDocumentationOrName(relTargetClass);
       String relTargetClassTableName = TableStereotypeHelper.getApplyTable_name(relTargetClass);
       String relTargetClassTableNameAs =
           NameRuledSqlAsKind.tableAs.getRuleNamed(relTargetClassTableName);
       // for relClass id property
       Property propertyTypeIdProperty = EntityHelper.getIDProperty(relTargetClass);
       String propertyTypeIdPropertyUncapSafeName =
           NameHelper.uncapSafeName(propertyTypeIdProperty);
       String relJoinColumnName = JoinColumnStereotypeHelper.getApplyColumn_name(property);
       compareColumnName = ownerTableNameAs + "." + relJoinColumnName;
       comparePropertyName = propertyUncapSafeName + "." + propertyTypeIdPropertyUncapSafeName;
       sb.append(
           getSqlMapSearchStatement(
               compareColumnName, comparePropertyName, propertyTypeName, operator, property));
       // for relClass lable property
       Property listLabelProperty = ViewListHelper.getProperty_listLabel(property);
       if (null != listLabelProperty) {
         String listLabelPropertyUncapSafeName =
             ViewListHelper.getViewListLabelRelPropertyName(property);
         // String
         // listLabelPropertyComment=ViewListHelper.getViewListLabelRelPropertyName(property);
         String listLabelColumnName = ColumnStereotypeHelper.getApplyColumn_name(property);
         compareColumnName = relTargetClassTableNameAs + "." + listLabelColumnName;
         comparePropertyName = propertyUncapSafeName + "." + listLabelPropertyUncapSafeName;
         sb.append(
             getSqlMapSearchStatement(
                 compareColumnName, comparePropertyName, propertyTypeName, operator, property));
       }
     }
     // String searchFieldName = getSearchFieldName(property);
     // String searchFieldCapName = NameHelper.getCapName(searchFieldName);
   }
   return sb.toString();
 }
  public String generate(Object argument) {
    final StringBuffer stringBuffer = new StringBuffer();
    Property curProperty = (Property) argument;
    Package uml2Package = curProperty.getNearestPackage();
    // String curPropertyGetAccessor=ModelHelper.getGetAccessor(curProperty);
    Class ownerClass = (Class) curProperty.getOwner();
    // Property ownerClassIdProperty=EntityHelper.getIDProperty(ownerClass);
    // String ownerClassIdPropertyGetter=ClassHelper.getGetAccessor(ownerClassIdProperty);
    UmlClassByPropertyWrap named = new UmlClassByPropertyWrap(curProperty);
    Class uml2Class = ownerClass;
    stringBuffer.append(TEXT_1);
    List<Property> tabsList = ViewInputHelper.getTabsProperty(uml2Class);
    List<Property> contentTabPropertyList = ViewInputHelper.getViewInputContentTab(uml2Class);
    if (!tabsList.isEmpty() || !contentTabPropertyList.isEmpty()) {
      stringBuffer.append(TEXT_2);
    }
    stringBuffer.append(TEXT_3);

    Property idProperty = EntityHelper.getIDProperty(uml2Class);
    String idPropertyUncapSafeName = NameHelper.uncapSafeName(idProperty);
    List<Property> propertyList = new ArrayList<Property>();
    List<Property> inputValidateList = ViewInputHelper.getInputPropertyForValidate(uml2Class);
    propertyList.addAll(inputValidateList);
    // List<Property> M2OSelectList=ViewInputHelper.getApplyM2OSelect(uml2Class);
    // List<Property> O2OSelectList=ViewInputHelper.getApplyO2OSelect(uml2Class);
    // List<Property> O2OSelectPageList=ViewInputHelper.getApplyO2OSelectPage(uml2Class);
    // List<Property> M2OSelectPageList=ViewInputHelper.getApplyM2OSelectPage(uml2Class);
    // propertyList.addAll(M2OSelectList);
    // propertyList.addAll(O2OSelectList);
    // propertyList.addAll(O2OSelectPageList);
    // propertyList.addAll(M2OSelectPageList);

    int count = 0;
    for (int i = 0; i < propertyList.size(); i++) {
      Property property = propertyList.get(i);
      if (ViewInputHelper.isViewInput_readonly(property)) {
        continue;
      }
      if (property.getName().equals(curProperty.getName())) {
        continue;
      }
      String jqueryValidate = PageHelper.getJqueryValidate(property);
      if (null != jqueryValidate) {
        String propertyCommentName = TypeHelper.getDocumentationOrName(property);
        if (!ClassHelper.isSimple(property)
            && null != jqueryValidate
            && !jqueryValidate.trim().equals("")) {
          // String propertySelectListKey=ViewInputHelper.getRelForListKey(property);
          Class propertyType = (Class) property.getType();
          // String propertyTypeComment = TypeHelper.getDocumentationOrName(propertyType);
          Property propertyTypeIdProperty = EntityHelper.getIDProperty(propertyType);
          String propertyTypeIdPropertyUncapSafeName =
              NameHelper.uncapSafeName(propertyTypeIdProperty);
          stringBuffer.append(TEXT_4);
          if (count != 0) {
            stringBuffer.append(TEXT_5);
          }
          stringBuffer.append(TEXT_6);
          stringBuffer.append(NameHelper.getUncapName(property));
          stringBuffer.append(TEXT_7);
          stringBuffer.append(propertyTypeIdPropertyUncapSafeName);
          stringBuffer.append(TEXT_8);
          stringBuffer.append(jqueryValidate);
          stringBuffer.append(TEXT_9);
          stringBuffer.append(++count);
          stringBuffer.append(TEXT_10);
          stringBuffer.append(propertyCommentName);
          stringBuffer.append(TEXT_11);
        } else {
          stringBuffer.append(TEXT_12);
          if (i != 0) {
            stringBuffer.append(TEXT_13);
          }
          stringBuffer.append(NameHelper.getUncapName(property));
          stringBuffer.append(TEXT_14);
          stringBuffer.append(jqueryValidate);
          stringBuffer.append(TEXT_15);
          stringBuffer.append(++count);
          stringBuffer.append(TEXT_16);
          stringBuffer.append(propertyCommentName);
        }
      }
      stringBuffer.append(TEXT_17);
    }
    stringBuffer.append(TEXT_18);
    stringBuffer.append(named.getUrl(WebUrlName.saveOutJson));
    stringBuffer.append(TEXT_19);
    List<Property> fileSimpleInputPropertyList =
        ViewInputHelper.getFileSimpleInputProperty(uml2Class);
    boolean firstLine = true;
    for (Iterator<Property> it = fileSimpleInputPropertyList.iterator();
        it.hasNext(); ) { // process simpleProperty
      Property property = it.next();
      // String propertyCommentName=TypeHelper.getDocumentationOrName(property);
      String propertyUncapSafeName = NameHelper.uncapSafeName(property);
      if (ClassHelper.isSimple(property)) {
        stringBuffer.append(TEXT_20);
        if (firstLine) {
          firstLine = false;
        } else {
          stringBuffer.append(TEXT_21);
        }
        stringBuffer.append(TEXT_22);
        stringBuffer.append(propertyUncapSafeName);
        stringBuffer.append(TEXT_23);
        stringBuffer.append(propertyUncapSafeName);
        stringBuffer.append(TEXT_24);
      } else if (ClassHelper.isOneToOne(property) || ClassHelper.isManyToOne(property)) {
        Type propertyType = property.getType();
        Class propertyTypeClass = (Class) propertyType;
        // String relTargetClassCapName=NameHelper.getCapName(relTargetClass);
        // String relTargetClassUncapName=NameHelper.getUncapName(relTargetClass);
        // String relTargetClassCommentName=TypeHelper.getDocumentationOrName(propertyTypeClass);
        // String
        // relM2OAndO2OSelectPage=NamedUtil.getPropertyNamedUncap(propertyTypeClass,PropertyNamedRuleKind.relM2OAndO2OSelectPage);
        Property propertyTypeIdProperty = EntityHelper.getIDProperty(propertyTypeClass);
        String propertyTypeIdPropertyUncapSafeName =
            NameHelper.uncapSafeName(propertyTypeIdProperty);
        stringBuffer.append(TEXT_25);
        if (firstLine) {
          firstLine = false;
        } else {
          stringBuffer.append(TEXT_26);
        }
        stringBuffer.append(TEXT_27);
        stringBuffer.append(propertyUncapSafeName);
        stringBuffer.append(TEXT_28);
        stringBuffer.append(propertyTypeIdPropertyUncapSafeName);
        stringBuffer.append(TEXT_29);
        stringBuffer.append(propertyUncapSafeName);
        stringBuffer.append(TEXT_30);
        stringBuffer.append(propertyTypeIdPropertyUncapSafeName);
        stringBuffer.append(TEXT_31);
      }
    }
    stringBuffer.append(TEXT_32);
    stringBuffer.append(named.getUrl(WebUrlName.updateOutJson));
    stringBuffer.append(TEXT_33);

    /**
     * *************************************************************** rel O2OSelectPage
     * M2OSelectPage /****************************************************************
     */
    List<Property> resultPropertyList = ViewInputHelper.getApplyM2OSelectPage(uml2Class);
    List<Property> m2oPropertyList = ViewListHelper.getViewListPropertiesFromM2o(uml2Class);
    List<Property> o2oPropertyList = ViewListHelper.getViewListPropertiesFromO2o(uml2Class);
    resultPropertyList.addAll(m2oPropertyList);
    resultPropertyList.addAll(o2oPropertyList);
    if (null != resultPropertyList && !resultPropertyList.isEmpty()) {
      for (Iterator<Property> iter = resultPropertyList.iterator(); iter.hasNext(); ) {
        Property property = iter.next();
        if (property.getName().equals(curProperty.getName())) {
          continue;
        }
        String propertyUncapSafeName = NameHelper.uncapSafeName(property);
        Type propertyType = property.getType();
        Class relTargetClass = (Class) propertyType;
        // String relTargetClassCapName=NameHelper.getCapName(relTargetClass);
        // String relTargetClassUncapName=NameHelper.getUncapName(relTargetClass);
        String relTargetClassCommentName = TypeHelper.getDocumentationOrName(relTargetClass);
        String relM2OAndO2OSelectPage =
            NamedUtil.getPropertyNamedUncap(
                relTargetClass, PropertyNamedRuleKind.relM2OAndO2OSelectPage);
        Property propertyTypeIdProperty = EntityHelper.getIDProperty(relTargetClass);
        String propertyTypeIdPropertyUncapSafeName =
            NameHelper.uncapSafeName(propertyTypeIdProperty);
        String listLabelPropertyUncapSafeName =
            ViewListHelper.getViewListLabelRelPropertyName(property);
        // String
        // listLabelPropertyComment=ViewListHelper.getViewListLabelRelPropertyComment(property);
        stringBuffer.append(TEXT_34);
        stringBuffer.append(relM2OAndO2OSelectPage);
        stringBuffer.append(TEXT_35);
        stringBuffer.append(relM2OAndO2OSelectPage);
        stringBuffer.append(TEXT_36);
        stringBuffer.append(relM2OAndO2OSelectPage);
        stringBuffer.append(TEXT_37);
        stringBuffer.append(relM2OAndO2OSelectPage);
        stringBuffer.append(TEXT_38);
        stringBuffer.append(relM2OAndO2OSelectPage);
        stringBuffer.append(TEXT_39);
        stringBuffer.append(relM2OAndO2OSelectPage);
        stringBuffer.append(TEXT_40);
        stringBuffer.append(relM2OAndO2OSelectPage);
        stringBuffer.append(TEXT_41);
        stringBuffer.append(relM2OAndO2OSelectPage);
        stringBuffer.append(TEXT_42);
        stringBuffer.append(relM2OAndO2OSelectPage);
        stringBuffer.append(TEXT_43);
        stringBuffer.append(relM2OAndO2OSelectPage);
        stringBuffer.append(TEXT_44);
        stringBuffer.append(relTargetClassCommentName);
        stringBuffer.append(TEXT_45);
        stringBuffer.append(
            MdaHelper.getModelUrlByRel(
                uml2Class, relTargetClass, WebUrlName.relM2OAndO2OSelectPage));
        stringBuffer.append(TEXT_46);
        stringBuffer.append(relM2OAndO2OSelectPage);
        stringBuffer.append(TEXT_47);
        stringBuffer.append(relM2OAndO2OSelectPage);
        stringBuffer.append(TEXT_48);
        stringBuffer.append(propertyUncapSafeName);
        stringBuffer.append(TEXT_49);
        stringBuffer.append(propertyTypeIdPropertyUncapSafeName);
        stringBuffer.append(TEXT_50);
        stringBuffer.append(propertyUncapSafeName);
        stringBuffer.append(TEXT_51);
        stringBuffer.append(listLabelPropertyUncapSafeName);
        stringBuffer.append(TEXT_52);
        stringBuffer.append(relM2OAndO2OSelectPage);
        stringBuffer.append(TEXT_53);
      }
    }
    return stringBuffer.toString();
  }