卫监接口项目一些零碎

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 把字符串写入XML文件/** * 创建文件夹 * @param filePath * @return */ public boolean makeDirs() { String folderName = IReportServer.getTempDir() + File.sep

把字符串写入XML文件

/**
     * 创建文件夹
     * @param filePath
     * @return
     */
    public boolean makeDirs() {
        String folderName = IReportServer.getTempDir()
                + File.separator + "hubei";
        if (StrFunc.isNull(folderName)) {
            return false;
        }
        File folder = new File(folderName);
        return (folder.exists() && folder.isDirectory()) ? true : folder.mkdirs();
    }
/**
     * 向工作目录写XML文件保存数据
     * @return
     * @throws Exception 
     */
    public void writeXml2WorkRoot(String xmlStr) throws Exception {
        Document document = DocumentHelper.parseText(xmlStr);
        //写入.xml文件  
        writerDocumentToNewFile(document);
    }

    //document写入新的文件  
    private void writerDocumentToNewFile(Document document) throws Exception {
        //输出格式  
        OutputFormat format = OutputFormat.createPrettyPrint();
        //设置编码  
        format.setEncoding("UTF-8");
        //XMLWriter 指定输出文件以及格式  
        if (makeDirs()) {
            XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream(new File(IReportServer.getTempDir()
                    + File.separator + "hubei" + File.separator + System.currentTimeMillis() + ".xml")), "UTF-8"), format);
            try {
                System.out.println("写入XML成功");
                //写入新文件  
                writer.write(document);
                writer.flush();
            } finally {
                writer.close();
            }
        } else {
            System.out.println("写入XML失败");
        }
    }

根据不同的数据解析XML文件,一种直接解析XML文件,另外一种解析XML格式的字符串

/**
     * 解析XML
     * @param url
     * @return 
     * @throws Exception
     */
    public List readXml(String url) throws Exception {
        List messages = new ArrayList();
        SAXReader reader = new SAXReader();
        File file = new File(url);
        Document document = reader.read(file);
        Element root = document.getRootElement();
        List childElements = root.elements();
        ArrayList list = new ArrayList();
        initList(list);
        Connection conn = IReportServer.getInstance().getConnection();
        try {
            //clearTable(conn);
            /**
             * 解析XML文件,存入Data中
             */
            Iterator iterator = childElements.iterator();
            do {
                Element child = (Element) iterator.next();
                HashMap map = new HashMap();
                String id = child.elementText("ID");
                for (int i = 0; i < keys.length; i++) {
                    map.put(keys[i], child.elementText(keys[i]));
                }
                Data data = new Data(id, map);
                Message message = data.check();
                if (message == null) {
                    messages.add(insertData(messages, data, conn, list));
                } else {
                    messages.add(message);
                }
            } while (iterator.hasNext());

        } finally {
            conn.close();
        }
        return messages;
    }

    /**
     * 根据字符串解析
     * @param xml
     * @return
     * @throws Exception
     */
    public List readXmlByString(String xml) throws Exception {
        List messages = new ArrayList();
        Document document = DocumentHelper.parseText(xml);
        Element root = document.getRootElement();
        List childElements = root.elements();
        ArrayList list = new ArrayList();
        initList(list);
        Connection conn = IReportServer.getInstance().getConnection();
        try {
            //clearTable(conn);
            /**
             * 解析XML文件,存入Data中
             */
            Iterator iterator = childElements.iterator();
            do {
                Element child = (Element) iterator.next();
                HashMap map = new HashMap();
                String id = child.elementText("ID");
                for (int i = 0; i < keys.length; i++) {
                    map.put(keys[i], child.elementText(keys[i]));
                }
                Data data = new Data(id, map);
                Message message = data.check();
                if (message == null) {
                    messages.add(insertData(messages, data, conn, list));
                } else {
                    messages.add(message);
                }
            } while (iterator.hasNext());
        } finally {
            conn.close();
        }
        return messages;
    }

插入数据

/**
     * 插入数据
     * @param data
     * @param conn
     * @param list
     * @return
     * @throws Exception
     */
    public Message insertData(List Messages, Data data, Connection conn, List list) throws Exception {
        //返回错误消息
        Message message = new Message();
        dataMap = data.getDataMap();
        message.setId(data.getID());
        //已知属性名情况下
        if (!list.contains(data.getID())) {
            list.add(data.getID());
            excuteDone(insertSql, 2, conn, data, dataMap);
            //设置成功
            message.setIsSuccess(0);
            message.setReason("插入成功");
        } else {
            //设置失败
            message.setIsSuccess(1);
            message.setReason("已存在");

            //更新数据
            //System.out.println(deleteSql);
            PreparedStatement pstat = conn.prepareStatement(deleteSql);
            try {
                pstat.setString(1, data.getID());
                pstat.executeQuery();
            } finally {
                pstat.close();
            }
            excuteDone(insertSql, 2, conn, data, dataMap);
            message.setIsSuccess(0);
            message.setReason("已存在但更新成功");
        }
        return message;
    }

    /**
     * 执行sql语句拼接加上操作
     * @param sql
     * @param index
     * @param conn
     * @param data
     * @throws SQLException
     * @throws ParseException
     */
    public void excuteDone(String sql, int index, Connection conn, Data data, HashMap dataMap) throws SQLException,
            ParseException {
        if (!StrFunc.isNull(sql)) {
            PreparedStatement pstat = conn.prepareStatement(sql);
            try {
                pstat.setString(1, data.getID());
                for (int i = 0; i < keys.length; i++) {
                    if ("VARCHAR".equals(types[i])) {
                        pstat.setString(i + index, (String) dataMap.get(keys[i]));
                    } else if ("CLOB".equals(types[i])) {
                        //pstat.setClob(i + 2, (oracle.sql.CLOB) data.getDataMap().get(keys[i]));
                        pstat.setString(i + index, (String) dataMap.get(keys[i]));
                    } else if ("DATE".equals(types[i])) {
                        if (StrFunc.isNull((String) dataMap.get(keys[i]))) {
                            pstat.setDate(i + index, null);
                        } else {
                            pstat.setDate(i + index, string2Date((String) dataMap.get(keys[i])));
                        }
                    } else if ("TIMESTAMP".equals(types[i])) {
                        if (!StrFunc.isNull((String) dataMap.get(keys[i]))) {
                            pstat.setTimestamp(i + index, string2Time((String) dataMap.get(keys[i])));
                        } else {
                            pstat.setTimestamp(i + index, null);
                        }
                    }
                }
                pstat.executeQuery();
            } finally {
                pstat.close();
            }
        } else {
            System.out.println("sql为空");
        }
    }

用TRUNCATE清楚表笔DELETE好

/**
     * 清除表
     * @param conn
     * @throws SQLException
     */
    private void clearTable(Connection conn) throws SQLException {
        Statement deleteState = conn.createStatement();
        try {
            deleteState.executeUpdate(truncateSql);
        } finally {
            deleteState.close();
        }
    }

将String类型转换成可以存到数据库的类型

/**
     * String转型到Timestamp
     * @param dateString
     * @return
     * @throws java.text.ParseException
     */
    public Timestamp string2Time(String dateString) throws java.text.ParseException {

        DateFormat dateFormat;
        dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.CHINESE);// 设定格式
        dateFormat.setLenient(false);// 严格控制输入 比如2010-02-31,根本没有这一天 ,也会认为时间格式不对。
        Date timeDate = dateFormat.parse(dateString);// util类型
        Timestamp dateTime = new Timestamp(timeDate.getTime());// Timestamp类型,timeDate.getTime()返回一个long型   
        return dateTime;
    }

    /**
     * String转型到Date 而且是java.util.Date到java.sql.Date
     * @param str
     * @return
     * @throws ParseException
     */
    public java.sql.Date string2Date(String str) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");//小写的mm表示的是分钟
        Date date = sdf.parse(str);
        java.sql.Date sqlDate = new java.sql.Date(date.getTime());
        return sqlDate;
    }

返回的时候一种字符串的拼接

/**
     * 转换成JSON数据给返回
     * @param messages
     * @return
     */
    public String toJSON(List messages) {
        System.out.println(messages.size());
        if (messages.size() == 0) {
            return "数据为空";
        } else {
            StringBuffer str = new StringBuffer();
            str.append("[");
            Iterator iterator = messages.iterator();
            do {
                Message message = (Message) iterator.next();
                //组装一个对象   开始
                str.append("{\"id\":");
                str.append("\"" + message.getId() + "\",");
                str.append("\"reason\":");
                str.append("\"" + message.getReason() + "\",");
                str.append("\"isSuccess\":");
                str.append("\"" + message.getIsSuccess() + "\"}");
                //判断是否为最后一条数据,不是最后一条数据不需要加逗号---加了逗号也不影响,可以不判断
                str.append(",");
                //一个对象组装结束
                message.toString();
            } while (iterator.hasNext());
            str.append("]");
            return str.toString();
        }
    }
目录
相关文章
|
7月前
|
XML JSON 算法
【软件设计师备考 专题 】编写内部设计文档:构件划分图和接口
【软件设计师备考 专题 】编写内部设计文档:构件划分图和接口
109 0
|
7月前
|
数据可视化 数据库连接 测试技术
【软件设计师备考 专题 】编写外部设计文档:系统流程图和功能说明书
【软件设计师备考 专题 】编写外部设计文档:系统流程图和功能说明书
202 0
|
存储 监控 小程序
《优化接口设计的思路》系列:第三篇—留下用户调用接口的痕迹
大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。 作为一名从业已达六年的老码农,我的工作主要是开发后端Java业务系统,包括各种管理后台和小程序等。在这些项目中,我设计过单/多租户体系系统,对接过许多开放平台,也搞过消息中心这类较为复杂的应用,但幸运的是,我至今还没有遇到过线上系统由于代码崩溃导致资损的情况。这其中的原因有三点:一是业务系统本身并不复杂;二是我一直遵循某大厂代码规约,在开发过程中尽可能按规约编写代码;三是经过多年的开发经验积累,我成为了一名熟练工,掌握了一些实用的技巧。
102 0
《优化接口设计的思路》系列:第三篇—留下用户调用接口的痕迹
|
测试技术 开发工具 数据库
《移动互联网技术》第十一章 Android应用工程案例: 掌握Android系统的需求分析和设计以及 Android项目的程序测试和版本管理方法
《移动互联网技术》第十一章 Android应用工程案例: 掌握Android系统的需求分析和设计以及 Android项目的程序测试和版本管理方法
136 0
|
缓存 负载均衡 Kubernetes
如何设计一个安全的对外接口,老司机总结了这几点
博主之前做过恒丰银行代收付系统(相当于支付接口),包括现在的oltpapi交易接口和虚拟业务的对外提供数据接口。总之,当你做了很多项目写了很多代码的时候,就需要回过头来,多总结总结,这样你会看到更多之前写代码的时候看不到的东西,也能更明白为什么要这样做。
网络工程项目报价单应该怎么写?记住这6个步骤准没错!
网络工程项目报价单应该怎么写?记住这6个步骤准没错!
321 0
|
前端开发 算法 数据处理
前端基础向~从项目出手封装工具函数
前端基础向~从项目出手封装工具函数
167 0
|
搜索推荐
搭建相亲源码,小功能有大作用之关注功能
搭建相亲源码,小功能有大作用之关注功能
|
安全 UED
陪玩平台源码具有哪些优点,开发怎样实现
陪玩平台源码不仅实现陪玩下单、多人聊天等功能,还实现了用户直播、礼物打赏、快速匹配等功能,丰富系统功能,满足用户更多需求。