枚举的使用()

1:枚举的调用,dataType.saveOrUpdate(data, entryService, true, true);

2:   List<Object> data = parseData.queryMediaData(dataType);

要点:

A:  使用switch配合枚举的使用。灵活运用。

B: 枚举可以传入entryService   Bean进行业务处理。

try (FileInputStream fileInputStream = new FileInputStream(logFile);) {
            List<String> list = IOUtils.readLines(fileInputStream, "UTF-8");
            if (CollectionUtils.isNotEmpty(list)) {
                for (String str : list) {
                    switch (dataType) {
                        case COLUMN:
                            dataList.addAll(json2BColumn(str, DataType.COLUMN, currDate, tencentData));
                            break;
                        case COVER:
                            dataList.addAll(json2BCover(str, DataType.COVER, currDate, tencentData));
                            break;
                        case VIDEO:
                            dataList.addAll(json2BVideo(str, DataType.VIDEO, currDate, tencentData));
                            break;
                        case CHANGE_VIDEO:
                            dataList.addAll(json2ChangeVideo(str, DataType.CHANGE_VIDEO, currDate, tencentData));
                            break;
                        default:
                            throw new RuntimeException("unknown data type, dataType is: " + dataType);
                    }
                }
            }
              
           // saveOrUpdateTencentData(tencentData);
           
        }

 


public enum DataType {
    VIDEO(000, "video") {
        @Override
        public Integer getState(Object obj) {
            BVideo bVideo = (BVideo) obj;
            return bVideo.getState();
        }

        @Override
        public int inject(List<Object> data, InjectService injectService, EntryService entryService) {
            List<CdnRecord> list = new ArrayList<>();
            data.forEach(o -> {
                CdnRecord record = (CdnRecord) o;
                list.add(record);
            });
            try {
                return injectService.injectCdnRecord(list);
            }
            catch (Exception e) {
                throw new RuntimeException(String.format("inject error"), e);
            }
        }

        @Override
        public int saveOrUpdate(List<Object> validData, EntryService entryService, boolean isImport, boolean isApproval) {
            List<BVideo> bVideoValidList = new ArrayList<>();
            validData.forEach(o -> bVideoValidList.add((BVideo) o));
            return entryService.saveOrUpdateBVideo(bVideoValidList, isImport, isApproval);
        }
    },
    COVER(001, "cover") {
        @Override
        public Integer getState(Object obj) {
            BCover bCover = (BCover) obj;
            return bCover.getState();
        }

        @Override
        public int inject(List<Object> data, InjectService injectService, EntryService entryService) {
            List<TIptvsyncRecord> list = new ArrayList<>();
            data.forEach(o -> {
                TIptvsyncRecord iptv = (TIptvsyncRecord) o;
                list.add(iptv);
            });
            try {
                return injectService.injectIPTV(list);
            }
            catch (Exception e) {
                throw new RuntimeException(String.format("inject error"), e);
            }
        }

        @Override
        public int saveOrUpdate(List<Object> validData, EntryService entryService, boolean isImport, boolean isApproval) {
            List<BCover> bCoverValidList = new ArrayList<>();
            validData.forEach(o -> bCoverValidList.add((BCover) o));
            return entryService.saveOrUpdateBCover(bCoverValidList, isImport, isApproval);
        }
    },
    COLUMN(002, "column") {
        @Override
        public Integer getState(Object obj) {
            BColumn bColumn = (BColumn) obj;
            return bColumn.getState();
        }

        @Override
        public int inject(List<Object> data, InjectService injectService, EntryService entryService) {
            throw new RuntimeException("column not support inject");
        }

        @Override
        public int saveOrUpdate(List<Object> validData, EntryService entryService, boolean isImport, boolean isApproval) {
            List<BColumn> bcvList = new ArrayList<>();
            validData.forEach(o -> bcvList.add((BColumn) o));
            return entryService.saveOrUpdateBColumn(bcvList, isImport, isApproval);
        }
    },
    CHANGE_VIDEO(-003, "changevideo") {
        @Override
        public Integer getState(Object obj) {
            return 0;
        }

        @Override
        public int inject(List<Object> data, InjectService injectService, EntryService entryService) {
            throw new RuntimeException("change video not support inject");
        }

        @Override
        public int saveOrUpdate(List<Object> validData, EntryService entryService, boolean isImport, boolean isApproval) {
            List<ChangeVideo> cvvList = new ArrayList<>();
            validData.forEach(o -> cvvList.add((ChangeVideo) o));
            return entryService.saveOrUpdateChangeVideo(cvvList, isImport, isApproval);
        }
    };

    /**
     *  数据类型转换为枚举
     *
     * @param type
     * @return
     */
    public static DataType getDataType(int type) {
        DataType[] values = DataType.values();
        for (DataType dataType : values) {
            if (dataType.type == type) {
                return dataType;
            }
        }
        throw new RuntimeException("undefined data type!");
    }

    private int type;
    private String typeName;

    private DataType(int type, String typeName) {
        this.type = type;
        this.typeName = typeName;
    }

    /**
     * 获取对象状态
     *
     * @param obj 对象实例
     * @return
     */
    public abstract Integer getState(Object obj);

    public int getType() {
        return this.type;
    }

    public String getTypeName() {
        return this.typeName;
    }

    /**
     * 成功注入数量
     *
     * @param data 需要注入的数据
     * @param injectService 注入服务
     * @param entryService 保存数据服务
     * @return
     */
    public abstract int inject(List<Object> data, InjectService injectService, EntryService entryService);

    /**
     * 保存或更新对象,该方法会级联操作对象下的图片对象
     *
     * @param validData 需要保存对象的列表
     * @param entryService 实际执行的服务类接口
     * @param isImport 是否导入
     * @param isApproval 是否审批
     * @return 影响行数
     */
    public abstract int saveOrUpdate(List<Object> data, EntryService entryService, boolean isImport, boolean isApproval);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值