lihang
2023-05-04 3579af2945dd38d841a23cd340acd474bb63773a
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllOracleMapperProcessor.java
@@ -1,23 +1,13 @@
package com.vci.ubcs.ddl.processor.dll;
<<<<<<< HEAD
=======
import com.vci.starter.web.enumpck.VciFieldTypeEnum;
>>>>>>> dd3a6c681f938fd53d5f6cc3a4fcee40e71b259c
import com.vci.ubcs.ddl.bo.DdlFieldMappingAttrBO;
import com.vci.ubcs.ddl.mapper.DllMapper;
import com.vci.ubcs.ddl.mapper.DllOracleMapper;
import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
import com.vci.ubcs.starter.exception.VciBaseException;
<<<<<<< HEAD
import com.vci.ubcs.starter.util.VciSpringUtil;
import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
=======
>>>>>>> dd3a6c681f938fd53d5f6cc3a4fcee40e71b259c
import org.apache.commons.collections4.BidiMap;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.List;
/**
 * Description:
@@ -25,122 +15,31 @@
 * @author LiHang
 * @date 2023/4/24
 */
@Component
public class DllOracleMapperProcessor extends DllMapperProcessor {
   @Resource
   private DllOracleMapper realMapper;
   private static DllMapper mapper = VciSpringUtil.getBean(DllOracleMapper.class);
   private static DllMapper mapper;
   @PostConstruct
   public void init(){
      mapper = realMapper;
   }
   private static final BidiMap<VciFieldTypeEnum, DdlFieldMappingAttrBO> FIELD_MAP = getMappingMapCopy();
   public DllOracleMapperProcessor() {
      super(mapper);
      System.out.println("-----------------");
      if (mapper != null){
         System.out.println("[success]::加载Oracle数据库DLL操作服务成功");
      }else {
         System.out.println("[fail]::加载Oracle数据库DLL操作服务失败");
      }
   }
   public static class SINGLE {
      public static DllOracleMapperProcessor INSTANCE = new DllOracleMapperProcessor();
   @Override
   protected DdlFieldMappingAttrBO getMappingBO(VciFieldTypeEnum fieldTypeEnum) {
      return getMappingBOInMap(fieldTypeEnum,FIELD_MAP);
   }
   @Override
   public boolean support(String url) {
      return "oracle.jdbc.OracleDiver".equals(url);
   }
   /**
    * 获取创建的sql语句中属性部分
    *
    * @param attributeVOList 属性的立碑
    * @return sql语句
    */
   @Override
   public String getCreateSqlByAttributeForBtm(List<BtmTypeAttributeVO> attributeVOList) {
      StringBuilder sb = new StringBuilder();
      attributeVOList.forEach(a -> {
         sb.append(a.getId()).append(SPACE);
         VciFieldTypeEnum fieldTypeEnum = VciFieldTypeEnum.forValue(a.getAttrDataType());
         if (fieldTypeEnum == null) {
            throw new VciBaseException("属性有误");
         }
         switch (fieldTypeEnum) {
            case VTInteger:
            case VTLong:
               sb.append(dealNumberCreateSql(a));
               break;
            case VTDouble:
               sb.append(dealDoubleCreateSql(a));
               break;
            case VTBoolean:
               sb.append(dealBooleanCreateSql(a));
               break;
            case VTDate:
            case VTDateTime:
            case VTTime:
               sb.append(dealDateTimeCreateSql(a));
               break;
            case VTFilePath:
               sb.append(VARCHAR).append("(100)").append(SPACE);
               break;
            case VTClob:
               sb.append("CLOB").append(SPACE);
               if(!a.isNullableFlag()){
                  sb.append(SPACE).append("not null").append(SPACE);
               }
               break;
            default:
               sb.append(dealStringCreateSql(a));
               break;
         }
         sb.append(",\n\t");
      });
      return sb.substring(0,sb.lastIndexOf(","));
   }
   /**
    * 处理字符串类型的sql转换
    *
    * @param attributeVO 属性
    * @return sql
    */
   @Override
   public String dealStringCreateSql(BtmTypeAttributeVO attributeVO) {
      Integer length2 = attributeVO.getAttributeLength();
      StringBuilder sb = new StringBuilder();
      if(length2 == null){
         length2 = 250;
      }
      sb.append(VARCHAR).append("(").
         append(String.valueOf(length2.intValue())).append(")").append(SPACE);
      if (OID.equalsIgnoreCase(attributeVO.getId())) {
         sb.append(" primary key ");
         //强制设置OID为主键
      }
      sb.append(dealDefaultAndNull(attributeVO));
      return sb.toString();
   }
   /**
    * 处理日期时间类型的sql转换
    *
    * @param attributeVO 属性
    * @return sql
    */
   @Override
   public String dealDateTimeCreateSql(BtmTypeAttributeVO attributeVO) {
      return TIMESTAMP + SPACE + dealNullableSql(attributeVO);
   }
   /**
    * 处理布尔类型的sql转换
    *
    * @param attributeVO 属性
    * @return sql
    */
   @Override
   public String dealBooleanCreateSql(BtmTypeAttributeVO attributeVO) {
      return VARCHAR + "(5)" + SPACE + dealDefaultAndNull(attributeVO);
   }
}