123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493 |
- package com.rtdb.test;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import java.util.Random;
- import com.rtdb.api.callbackInter.RSDataChange;
- import com.rtdb.api.callbackInter.RSDataChangeEx;
- import com.rtdb.api.model.MemoryStream;
- import com.rtdb.api.model.NamedDataTypeField;
- import com.rtdb.api.model.NamedType;
- import com.rtdb.api.model.NamedTypeNameToFieldsCount;
- import com.rtdb.api.model.RtdbData;
- import com.rtdb.api.util.BytesConvertUtil;
- import com.rtdb.api.util.DateUtil;
- import com.rtdb.enums.DataSort;
- import com.rtdb.enums.Quality;
- import com.rtdb.model.BlobData;
- import com.rtdb.model.CoorData;
- import com.rtdb.model.DatetimeData;
- import com.rtdb.model.DoubleData;
- import com.rtdb.model.Entity;
- import com.rtdb.model.ErrorParse;
- import com.rtdb.model.IntData;
- import com.rtdb.model.NamedTypeData;
- import com.rtdb.model.SearchCondition;
- import com.rtdb.service.impl.BaseImpl;
- import com.rtdb.service.impl.ServerImpl;
- import com.rtdb.service.impl.ServerImplPool;
- import com.rtdb.service.impl.SnapshotImpl;
- import com.rtdb.service.inter.Base;
- import com.rtdb.service.inter.Server;
- import com.rtdb.service.inter.Snapshot;
- /**
- * <p>
- * Description:快照服务类测试
- * </p>
- * <p>
- * Copyright: Copyright (c) 2012 GoldenAPI_Java , 北京庚顿数据科技有限公司
- * </p>
- * <p>
- * Company: 北京庚顿数据科技有限公司(www.golden-data.com.cn)
- * </p>
- */
- @SuppressWarnings("unused")
- public class SnapshotTest {
- private static Snapshot snap = null;
- private static Base base = null;
- //private static ServerImpl server = null;
- public static void main(String[] args) {
- try {
- //ServerImplPool pool = new ServerImplPool("192.168.1.144", 6327, "sa", "golden", 1, 8);
- ServerImpl server = new ServerImpl("172.168.1.3", 6327, "sa", "golden");
- //server = pool.getServerImpl();
- snap = new SnapshotImpl(server);
-
- base = new BaseImpl(server);
- // cancelSubscribeSnapshots();
- // fixCoorSnapshots();//3.0测试完成
- // fixDoubleSnapshot();//3.0测试完成
- // fixIntSnapshot();//3.0测试完成
- // getBlobSnapshot();//3.0测试完成
- // getBlobSnapshots();//3.0测试完成与GEM显示数据不同
- // getCoorSnapshots();//3.0测试完成
- // getDateTimeSnapshots();//3.0测试完成
- // getDoubleSnapshots();// 3.0测试完成
- // getIntSnapshots();//3.0测试完成
- // getNamedTypeSnapshot();//此API暂缓测试
- // getNamedTypeSnapshots();//此API暂缓测试
- // pubDateTimeSnapshots();//3.0测试完成
- //putBlobSnapshot();//3.0测试完成
- // putBlobSnapshots();//3.0测试完成
- //putCoorSnapshots();//3.0测试完成
- // putDoubleSnapshots();//3.0测试完成
- // putIntSnapshots();//3.0测试完成。
- //putNamedTypeSnapshot();// 此API暂缓测试
- // putNamedTypeSnapshots();//此API暂缓测试
- // subscribeSnapshots();//3.0测试完成
- subscribsnapshotsEx();//3.0测试完成
- //server.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static void getBlobSnapshot() throws Exception {
- int id = 233;
- BlobData b = snap.getBlobSnapshot(id);
- byte[] blob = b.getBlob();
- System.out.println(new String(blob, "gbk"));
- }
- // 批量读取dateTime类型标签点实时数据
- public static void getDateTimeSnapshots() throws Exception {
- int[] ids = { 10115, 10116 };
- Entity<DatetimeData> en = snap.getDateTimeSnapshots(ids);
- List<DatetimeData> list = en.getList();
- for (DatetimeData d : list) {
- Date value = d.getValue();
- System.out
- .println(DateUtil.getGMTTime(value) + " " + ErrorParse.getGoldenError(d.getError()).getErrmsg());
- }
- }
- // 获取自定义类型测点的单个快照
- @SuppressWarnings("null")
- private static void getNamedTypeSnapshot() throws Exception {
- int id = 6022;
- short length = 12;
- NamedTypeData t = snap.getNamedTypeSnapshot(id, length);
- // 获取快照数据
- byte[] bz = t.getValue();
- // 根据列名,列数据类型读数据
- MemoryStream m = new MemoryStream(bz);
- float readFloat = m.readFloat();
- float readFloat2 = m.readFloat();
- float readFloat3 = m.readFloat();
- int[] ids = { id };
- // 1.根据id获取自定义类型的名称
- List<NamedTypeNameToFieldsCount> p = base.getNamedTypeNamesProperty(ids);
- String[] name = new String[p.size()];
- int[] lens = new int[p.size()];
- for (int i = 0; i < p.size(); i++) {
- NamedTypeNameToFieldsCount nt = p.get(i);
- // 获取自定义类型的名称
- name[i] = nt.getName().trim();
- // 获取自定义类型的长度
- lens[i] = nt.getLen();
- }
- // 获取自定义类型数据的列属性(如几列,列名称,该列的字节长度,该列的数据类型
- NamedType namedType = base.getNamedType(name[0]);
- List<NamedDataTypeField> list = namedType.getTypeFields();
- String[] fName = null;
- int[] len = new int[list.size()];
- for (int i = 0; i < list.size(); i++) {
- fName[i] = list.get(i).getFieldName();
- len[i] = list.get(i).getLength();
- }
- byte[] value = t.getValue();
- MemoryStream stream = new MemoryStream(value);
- boolean v1 = ((stream.readByte() > 0) ? true : false);
- float v2 = stream.readFloat();
- System.out.println(v1);
- System.out.println(v2);
- }
- // 批量获取自定义类型测点的快照
- private static void getNamedTypeSnapshots() throws Exception {
- int[] ids = { 116510 };
- short[] lengths = {};
- Entity<NamedTypeData> nd = snap.getNamedTypeSnapshots(ids, lengths);
- List<NamedTypeData> list = nd.getList();
- for (int i = 0; i < list.size(); i++) {
- byte[] value = list.get(i).getValue();
- for (int j = 0; j < value.length; j++) {
- System.out.println(value[i]);
- }
- }
- }
- private static void pubDateTimeSnapshots() throws Exception {
- List<DatetimeData> list = new ArrayList<DatetimeData>();
- DatetimeData d = new DatetimeData();
- String date = "2018-10-16 11:45:00";
- SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- d.setDateTime(new Date());
- d.setId(6);
- d.setValue(format.parse(date));
- d.setMs((short) 999);
- d.setQuality(Quality.GOOD.getNum());
- list.add(d);
- Entity<DatetimeData> entity = snap.putDatetimeSnapshots(list);
- List<DatetimeData> res = entity.getList();
- for (DatetimeData data : res) {
- System.out.println(data.getId() + " " + ErrorParse.getGoldenError(data.getError()).getErrmsg());
- }
- }
- // 写入单个自定义类型标签点的快照
- private static void putNamedTypeSnapshot() throws Exception {
- NamedTypeData named = new NamedTypeData();
- named.setId(39440);
- named.setLen(12);
- byte[] by = new byte[12];
- int c = 3;
- float d = 38;
- int e = 29;
- byte[] es = BytesConvertUtil.intToBytes(e);
- byte[] ds = BytesConvertUtil.floatToBytes(d,0);
- byte[] cs = BytesConvertUtil.intToBytes(c);
- System.arraycopy(cs, 0, by, 0, cs.length);
- System.arraycopy(ds, 0, by, cs.length, ds.length);
- System.arraycopy(es, 0, by, cs.length+ds.length, es.length);
-
- named.setValue(by);
- named.setQuality((short) 0);
- named.setDatetime(new Date());
- snap.putNamedTypeSnapshot(named);
- }
- // 批量写入自定义类型标签点的快照
- private static void putNamedTypeSnapshots() throws Exception {
- List<NamedTypeData> list = new ArrayList<NamedTypeData>();
- NamedTypeData named = new NamedTypeData();
- named.setId(116393);
- named.setLen(20);
- named.setValue("112".getBytes());
- named.setQuality((short) 2);
- named.setDatetime(new Date());
- list.add(named);
- snap.putNamedTypeSnapshots(list);
- }
- // 批量标签点快照改变的通知订阅
- public static void subscribsnapshotsEx() throws Exception {
- /*
- * Base base = new BaseImpl(new ServerImpl("127.0.0.1", 6327, "sa",
- * "golden")); int[] ids = { 1, 2, 3, 4, 5 };
- */
- int count = base.getTableSizeByName("QSFJ");
- Object param = " abc ";
- SearchCondition s = new SearchCondition();
- s.setTablemask("QSFJ");
- int[] ids = base.search(s, count, DataSort.SORT_BY_ID);
- int[] errors = new int[ids.length];
- snap.subscribeSnapshotsEx(param, ids, new RSDataChangeEx() {
- @Override
- public void run(Object param, RtdbData[] goldenDatas) {
- System.out.print(param + ": \t" + goldenDatas.length);
- for (int i = 0; i < goldenDatas.length; i++) {
- System.out.println(",id: " + goldenDatas[i].getId() + " :: " + goldenDatas[i].getValue() + " :: "
- + DateUtil.dateToString(goldenDatas[i].getDate()) + " ");
- }
- System.out.println(" end");
- }
- }, errors);
- }
- // 获得int类型的快照值
- public static void getIntSnapshots() throws Exception {
- Entity<IntData> ents = snap.getIntSnapshots(new int[] { 10113 });
- for (IntData db : ents.getList())
- System.out.println(db.getId() + "---" + db.getValue() + "---" + DateUtil.getGMTTime(db.getDateTime()));
- }
- // 批量插入int类型的快照
- public static void putIntSnapshots() throws Exception {
- List<IntData> list = new ArrayList<IntData>();
- IntData data = new IntData();
- data.setDateTime(new Date());
- data.setState(22);
- data.setId(239);
- data.setQuality((short) 0);
- data.setError(0);
- list.add(data);
- IntData data1 = new IntData();
- data1.setDateTime(new Date());
- data1.setState(13);
- data1.setId(241);
- data1.setQuality((short) 0);
- data1.setError(0);
- list.add(data1);
- IntData data2 = new IntData();
- data2.setDateTime(new Date());
- data2.setState(13);
- data2.setId(242);
- data2.setQuality((short) 0);
- data2.setError(0);
- list.add(data2);
-
- int count = snap.putIntSnapshots(list);
- System.out.println("成功了 " + count + " 条 id: ");
- for (IntData intData : list) {
- System.out.println(intData.getId() + " " + ErrorParse.getGoldenError(intData.getError()).getErrmsg());
- }
- }
- // 获得double类型的快照
- public static void getDoubleSnapshots() throws Exception {
- int[] ids = { 10108 };
- Entity<DoubleData> d = snap.getDoubleSnapshots(ids);
- List<DoubleData> list = d.getList();
- for (DoubleData db : list) {
- System.out.println(db.getId() + "---" + db.getValue() + "---" + DateUtil.getGMTTime(db.getDateTime()));
- }
- }
- // 写入浮点类型的快照
- public static void putDoubleSnapshots() throws Exception {
- List<DoubleData> doubleDataList = new ArrayList<DoubleData>();
- DoubleData data = new DoubleData();
- data.setId(248);
- data.setValue(200.12);
- data.setDateTime(new Date());
- DoubleData data3 = new DoubleData();
- data3.setId(250);
- data3.setValue(200.12);
- data3.setDateTime(new Date());
- DoubleData data1= new DoubleData();
- data1.setId(249);
- data1.setValue(1000.30);
- data1.setDateTime(new Date());
- doubleDataList.add(data);
- doubleDataList.add(data3);
- doubleDataList.add(data1);
- int count = snap.putDoubleSnapshots(doubleDataList);
- System.out.println("成功 " + count + " 条 ");
- for (DoubleData d : doubleDataList) {
- System.out.println( "id:"+d.getId() + " " + ErrorParse.getGoldenError(d.getError()).getErrmsg() + "\r\t");
- }
- }
- // 批量修改int类型的快照
- public static void fixIntSnapshot() throws Exception {
- List<IntData> list = new ArrayList<IntData>();
- IntData d = new IntData();
- d.setId(10113);
- d.setValue(666);
- list.add(d);
- int n = snap.fixIntSnapshot(list);
- System.out.println(n);
- }
- // 批量修改浮点类型的快照
- public static void fixDoubleSnapshot() throws Exception {
- List<DoubleData> list = new ArrayList<DoubleData>();
- Random r = new Random();
- DoubleData d = new DoubleData();
- d.setId(1);
- d.setValue((r.nextDouble()) * 100);
- list.add(d);
- DoubleData d2 = new DoubleData();
- d2.setId(2);
- d2.setValue((r.nextDouble()) * 100);
- list.add(d2);
- int n = snap.fixDoubleSnapshot(list);
- System.out.println(n);
- }
- // 获得坐标类型的快照
- public static void getCoorSnapshots() throws Exception {
- int[] ids = new int[] { 10105, 10106 };
- Entity<CoorData> ents = snap.getCoorSnapshots(ids);
- List<CoorData> list = ents.getList();
- for (int i = 0; i < list.size(); i++) {
- System.out.println(ents.getRetInfo() + " " + list.get(i).getX() + " " + list.get(i).getY());
- }
- }
- // 批量写入coor类型快照值
- public static void putCoorSnapshots() throws Exception {
- List<CoorData> list = new ArrayList<CoorData>();
- CoorData data = new CoorData();
- data.setId(251);
- data.setX((float) 323.2);
- data.setY((float) 333.3);
- data.setDateTime(new Date());
- list.add(data);
- int count = snap.putCoorSnapshots(list);
- System.out.print("成功 " + count + "条 id: ");
- for (CoorData coorData : list) {
- System.out.println(coorData.getId() + " " + ErrorParse.getGoldenError(coorData.getError()).getErrmsg());
- }
- }
- // 批量修改coor类型 的快照
- public static void fixCoorSnapshots() throws Exception {
- List<CoorData> list = new ArrayList<CoorData>();
- CoorData d = new CoorData();
- d.setId(10107);
- d.setDateTime(new Date());
- d.setX((float) 988.22);
- d.setY((float) 466.23);
- list.add(d);
- CoorData d2 = new CoorData();
- d2.setId(10108);
- d2.setDateTime(new Date());
- d2.setX((float) 989.22);
- d2.setY((float) 277.23);
- list.add(d2);
- int n = snap.fixCoorSnapshots(list);
- System.out.println(n);
- }
- // 批量获得blob快照
- public static void getBlobSnapshots() throws Exception {
- int[] ids = new int[] { 10111 };
- Entity<BlobData> ents = snap.getBlobSnapshots(ids);
- // for(int i = 0; i < ents.getList().size(); i++)
- for (BlobData data : ents.getList()) {
- byte[] blob = data.getBlob();
- for (int j = 0; j < blob.length; j++) {
- System.out.print(blob[j] + " ");
- }
- System.out.println(data.getError());
- System.out.println();
- }
- // System.out.println(new String(blob,"gbk"));
- }
- // 写入blob类型的快照
- public static void putBlobSnapshot() throws Exception {
- BlobData data = new BlobData();
- data.setId(252);
- String s = "zhong'gu";
- byte[] bytes = s.getBytes();
- data.setBlob(bytes);
- data.setDatetime(new Date());
- data.setQuality(Quality.GOOD);
- boolean b = snap.putBlobSnapshot(data);
- System.out.println(b);
- }
- // 写入批量blob类型的快照
- public static void putBlobSnapshots() throws Exception {
- List<BlobData> datas = new ArrayList<BlobData>();
- BlobData data = new BlobData();
- data.setId(242);
- String s = "中";
- byte[] bytes = s.getBytes();
- data.setBlob(bytes);
- data.setDatetime(new Date());
- data.setQuality(Quality.GOOD);
- datas.add(data);
- int result = snap.putBlobSnapshots(datas);
- System.out.println(result);
- }
- // 批量标签点快照改变的通知订阅
- public static void subscribeSnapshots() throws Exception {
- int[] ids = { 1 };
- String[] str ={"test.f"};
- snap.subscribeSnapshots(str, new RSDataChange() {
- @Override
- public void run(RtdbData[] rtdbDatas) {
- System.out.print(rtdbDatas.length + "条数据 ");
- for (int i = 0; i < rtdbDatas.length; i++) {
- System.out.print(" "+rtdbDatas[i].getValue() + " , ");
- }
- System.out.println(" end");
- }
- });
- }
- // 取消标签点快照更改通知订阅
- public static void cancelSubscribeSnapshots() throws Exception {
- subscribeSnapshots();
- Thread.sleep(5000);
- snap.cancelSubscribeSnapshots();
- subscribsnapshotsEx();
- Thread.sleep(20000);
- snap.cancelSubscribeSnapshots();
- }
- }
|