|
From: <and...@us...> - 2017-06-24 11:31:13
|
Revision: 1458
http://sourceforge.net/p/ggc/code/1458
Author: andyrozman
Date: 2017-06-24 11:31:09 +0000 (Sat, 24 Jun 2017)
Log Message:
-----------
2.4.2 [24.6.2017]
- Refactoring of Db (not 100%)
- Refactoring plugin data handling (DataHandler, DataReeader, Values)
- added devices:
- Ascensia Next One (refactoring of converter and reader)
- Menarini family
- Arkray family
Modified Paths:
--------------
trunk/ggc-plugins/ggc-meter/docs/Changelog
trunk/ggc-plugins/ggc-meter/pom.xml
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/MeterDataHandler.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/MeterDataReader.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/MeterValuesEntry.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/MeterValuesEntryDataType.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/db/GGCMeterDb.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/defs/GlucoseMeterMarker.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/defs/MeterPluginDefinition.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/defs/device/MeterDeviceDefinition.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/defs/device/MeterDeviceHandler.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/DummyMeter.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/SerialMeterAbstract.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/UsbMeterAbstract.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/accuchek/AccuChekMeterHandler.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/ascensia/AscensiaMeter.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/ascensia/AscensiaUsbMeterHandler.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/ascensia/impl/AscensiaContourUsbReader.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/ascensia/impl/AscensiaDecoder.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/manager/MeterDevicesIds.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/manager/MeterManager.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/util/DataAccessMeter.java
trunk/ggc-plugins/ggc-meter/src/main/resources/GGCMeterTool_en.properties
Added Paths:
-----------
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/arkray/
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/arkray/ArkrayMeterDataReader.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/arkray/ArkrayMeterHandler.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/arkray/ArkrayUtil.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/arkray/impl/
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/arkray/impl/ArkrayGlucoCard.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/arkray/impl/ArkrayGlucoCardMemoryPC.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/arkray/impl/ArkrayGlucoCardSM.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/arkray/impl/ArkrayGlucoMeter18xx.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/arkray/impl/ArkrayGlucoXMeter.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/arkray/impl/ArkrayGlucocardMX.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/arkray/impl/ArkrayMeterMode.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/arkray/impl/ArkraySerialMeterAbstract.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/arkray/impl/ArkrayUSBMeterAbstract.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/menarini/MeanriniMeterDataReader.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/menarini/MenariniMeterHandler.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/menarini/impl/
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/menarini/impl/MenariniGlucoMenGM.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/menarini/impl/MenariniGlucoMenLXMio.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/menarini/impl/MenariniGlucoMenLXMioPlus.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/menarini/impl/MenariniGlucoMenPC.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/menarini/impl/MenariniGlucoMenReady.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/menarini/impl/MenariniGlucoMenVisio.java
trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/menarini/impl/MenariniSerialMeterAbstract.java
trunk/ggc-plugins/ggc-meter/src/main/resources/icons/meters/ark_glucocard_gplus.png
trunk/ggc-plugins/ggc-meter/src/main/resources/icons/meters/ark_glucocard_mx.png
trunk/ggc-plugins/ggc-meter/src/main/resources/icons/meters/ark_glucocard_sm.png
trunk/ggc-plugins/ggc-meter/src/main/resources/icons/meters/ascensia_contour_next_one.png
trunk/ggc-plugins/ggc-meter/src/main/resources/icons/meters/mn_glucofix_id.png
trunk/ggc-plugins/ggc-meter/src/main/resources/icons/meters/mn_glucofix_mio_plus.png
trunk/ggc-plugins/ggc-meter/src/main/resources/icons/meters/mn_glucofix_premium.png
trunk/ggc-plugins/ggc-meter/src/main/resources/icons/meters/mn_glucofix_tech.png
trunk/ggc-plugins/ggc-meter/src/main/resources/icons/meters/mn_glucomen_areo.png
trunk/ggc-plugins/ggc-meter/src/main/resources/icons/meters/mn_glucomen_areo_2k.png
trunk/ggc-plugins/ggc-meter/src/main/resources/icons/meters/mn_glucomen_gm.png
trunk/ggc-plugins/ggc-meter/src/main/resources/icons/meters/mn_glucomen_lx2.png
trunk/ggc-plugins/ggc-meter/src/main/resources/icons/meters/mn_glucomen_lx_plus.png
trunk/ggc-plugins/ggc-meter/src/main/resources/icons/meters/mn_glucomen_ready.png
trunk/ggc-plugins/ggc-meter/src/main/resources/icons/meters/mn_glucomen_visio.png
trunk/ggc-plugins/ggc-meter/src/main/templates/
trunk/ggc-plugins/ggc-meter/src/main/templates/Version.java.template
trunk/ggc-plugins/ggc-meter/src/test/
trunk/ggc-plugins/ggc-meter/src/test/java/
trunk/ggc-plugins/ggc-meter/src/test/java/ggc/
trunk/ggc-plugins/ggc-meter/src/test/java/ggc/meter/
trunk/ggc-plugins/ggc-meter/src/test/java/ggc/meter/device/
trunk/ggc-plugins/ggc-meter/src/test/java/ggc/meter/device/TestDeviceInstructionsMeterEnum.java
Modified: trunk/ggc-plugins/ggc-meter/docs/Changelog
===================================================================
--- trunk/ggc-plugins/ggc-meter/docs/Changelog 2017-06-19 18:10:37 UTC (rev 1457)
+++ trunk/ggc-plugins/ggc-meter/docs/Changelog 2017-06-24 11:31:09 UTC (rev 1458)
@@ -2,6 +2,15 @@
Changes file for GGC Meter Tool
===============================
+2.4.2 [24.6.2017]
+- Refactoring of Db (not 100%)
+- Refactoring plugin data handling (DataHandler, DataReeader, Values)
+- added devices:
+ - Ascensia Next One (refactoring of converter and reader)
+ - Menarini family
+ - Arkray family
+
+
2.4.1 [26.6.2016]
- refactorings (code, db)
- graphs
Modified: trunk/ggc-plugins/ggc-meter/pom.xml
===================================================================
--- trunk/ggc-plugins/ggc-meter/pom.xml 2017-06-19 18:10:37 UTC (rev 1457)
+++ trunk/ggc-plugins/ggc-meter/pom.xml 2017-06-24 11:31:09 UTC (rev 1458)
@@ -16,6 +16,35 @@
<version>${ggc-meter-tool.version}</version>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.google.code.maven-replacer-plugin</groupId>
+ <artifactId>maven-replacer-plugin</artifactId>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>${project.build.directory}/generated-sources/ggc/meter/defs/</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+ </build>
+
+
<dependencies>
<dependency>
@@ -50,9 +79,9 @@
<properties>
-
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-
+ <version.file>
+ ${project.build.directory}/generated-sources/ggc/meter/defs/Version.java
+ </version.file>
</properties>
+
</project>
Modified: trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/MeterDataHandler.java
===================================================================
--- trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/MeterDataHandler.java 2017-06-19 18:10:37 UTC (rev 1457)
+++ trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/MeterDataHandler.java 2017-06-24 11:31:09 UTC (rev 1458)
@@ -2,7 +2,6 @@
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.Hashtable;
import java.util.Map;
import org.slf4j.Logger;
@@ -130,7 +129,7 @@
}
// 4. get pump data (for specific items)
- Hashtable<String, PumpDataExtendedH> pumpData = db.getPumpData(timeMarksWithChangedData);
+ Map<String, PumpDataExtendedH> pumpData = db.getPumpData(timeMarksWithChangedData);
this.setCustomStatus(1, 10);
// 5. add/edit pump items
@@ -155,10 +154,10 @@
// add
PumpDataExtendedH pdeh = new PumpDataExtendedH();
- pdeh.setDt_info(timeData.getKey() * 100);
+ pdeh.setDtInfo(timeData.getKey() * 100);
pdeh.setType(mvedt.getKey().pumpExtCode);
pdeh.setValue(getValueAsString(mvedt.getValue()));
- pdeh.setPerson_id((int) m_da.getCurrentUserId());
+ pdeh.setPersonId((int) m_da.getCurrentUserId());
pdeh.setExtended("SOURCE=" + m_da.getSourceDevice());
pdeh.setChanged(System.currentTimeMillis());
Modified: trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/MeterDataReader.java
===================================================================
--- trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/MeterDataReader.java 2017-06-19 18:10:37 UTC (rev 1457)
+++ trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/MeterDataReader.java 2017-06-24 11:31:09 UTC (rev 1458)
@@ -1,6 +1,6 @@
package ggc.meter.data;
-import java.util.Hashtable;
+import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -67,7 +67,7 @@
public void getMaxEntries()
{
db = m_da.getDb();
- this.all_entries = db.getAllElementsCount();
+ this.allEntries = db.getAllElementsCount();
}
@@ -75,7 +75,7 @@
* Read Old entries
*/
@Override
- public Hashtable<String, DeviceValuesEntryInterface> readOldEntries()
+ public Map<String, DeviceValuesEntryInterface> readOldEntries()
{
return db.getMeterValues(this);
// TODO Auto-generated method stub
@@ -100,12 +100,12 @@
{
if (current_entry == -1)
{
- this.m_drr.setOldDataReadingProgress(0);
+ this.deviceReaderRunner.setOldDataReadingProgress(0);
LOG.debug("Old Data reading progress [" + m_da.getApplicationName() + "]: 0% not started");
}
else if (current_entry == 0)
{
- this.m_drr.setOldDataReadingProgress(40);
+ this.deviceReaderRunner.setOldDataReadingProgress(40);
LOG.debug("Old Data reading progress [" + m_da.getApplicationName() + "]: 40% read from database");
LOG.debug("Old Data reading progress [" + m_da.getApplicationName()
+ "]: Started to sort through data (progress will not be displayed)");
@@ -112,7 +112,7 @@
}
else if (current_entry == -2)
{
- this.m_drr.setOldDataReadingProgress(100);
+ this.deviceReaderRunner.setOldDataReadingProgress(100);
}
else
{
@@ -123,7 +123,7 @@
// LOG.debug("Old Data reading progress [" +
// dataAccess.getApplicationName() + "]: " + proc_total_i + " %" );
- this.m_drr.setOldDataReadingProgress(proc_total_i);
+ this.deviceReaderRunner.setOldDataReadingProgress(proc_total_i);
/*
* try
Modified: trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/MeterValuesEntry.java
===================================================================
--- trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/MeterValuesEntry.java 2017-06-19 18:10:37 UTC (rev 1457)
+++ trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/MeterValuesEntry.java 2017-06-24 11:31:09 UTC (rev 1458)
@@ -6,7 +6,6 @@
import org.hibernate.Transaction;
import com.atech.data.GsonUtils;
-import com.atech.i18n.I18nControlAbstract;
import com.atech.utils.data.ATechDate;
import com.atech.utils.data.ATechDateType;
@@ -13,7 +12,7 @@
import ggc.core.data.ExtendedDailyValueHandler;
import ggc.core.data.ExtendedDailyValueType;
import ggc.core.data.defs.GlucoseUnitType;
-import ggc.core.db.hibernate.DayValueH;
+import ggc.core.db.hibernate.pen.DayValueH;
import ggc.meter.util.DataAccessMeter;
import ggc.plugin.data.DeviceValuesEntry;
import ggc.plugin.data.enums.DeviceEntryStatus;
@@ -48,9 +47,8 @@
public class MeterValuesEntry extends DeviceValuesEntry
{
- private static DataAccessMeter da = DataAccessMeter.getInstance();
- private static I18nControlAbstract ic = da.getI18nControlInstance();
- private static ExtendedDailyValueHandler extendedDailyValueHandler = da.getExtendedDailyValueHandler();
+ private static DataAccessMeter da; // = DataAccessMeter.getInstance();
+ private static ExtendedDailyValueHandler extendedDailyValueHandler;
private ATechDate datetime;
private Integer bgOriginal = null;
@@ -69,7 +67,12 @@
public MeterValuesEntry()
{
super();
- this.source = DataAccessMeter.getInstance().getSourceDevice();
+ if (da == null)
+ da = DataAccessMeter.getInstance();
+
+ this.source = da.getSourceDevice();
+ if (extendedDailyValueHandler == null)
+ extendedDailyValueHandler = da.getExtendedDailyValueHandler();
this.loadExtendedEntries(null);
resetExtendedType();
}
@@ -82,11 +85,12 @@
public MeterValuesEntry(DayValueH dv)
{
super();
- this.datetime = new ATechDate(this.getDateTimeFormat(), dv.getDt_info());
+ this.datetime = new ATechDate(this.getDateTimeFormat(), dv.getDtInfo());
this.setBgValue("" + dv.getBg(), GlucoseUnitType.mg_dL);
this.entry_object = dv;
this.object_status = DeviceValuesEntry.OBJECT_STATUS_OLD;
this.ch = dv.getCh();
+ extendedDailyValueHandler = da.getExtendedDailyValueHandler();
this.loadExtendedEntries(dv.getExtended());
@@ -596,8 +600,8 @@
this.entry_object.setIns1(0);
this.entry_object.setIns2(0);
this.entry_object.setCh(0.0f);
- this.entry_object.setPerson_id((int) DataAccessMeter.getInstance().getCurrentUserId());
- this.entry_object.setDt_info(this.getDateTime());
+ this.entry_object.setPersonId((int) DataAccessMeter.getInstance().getCurrentUserId());
+ this.entry_object.setDtInfo(this.getDateTime());
}
@@ -613,7 +617,7 @@
this.entry_object.setChanged(System.currentTimeMillis());
this.entry_object.setComment(createComment());
- this.entry_object.setPerson_id((int) DataAccessMeter.getInstance().getCurrentUserId());
+ this.entry_object.setPersonId((int) DataAccessMeter.getInstance().getCurrentUserId());
// log.debug("Updated. Status was Edit. Action was: " + act);
}
@@ -804,6 +808,13 @@
}
+ private ExtendedDailyValueHandler getExtendedHandler()
+ {
+ // FIXME
+ return null;
+ }
+
+
public boolean hasUrine()
{
if (extendedMap == null)
@@ -924,7 +935,7 @@
*/
public String getExtendedTypeDescription()
{
- return ic.getMessage(extendedType.getDescription()); // extendedTypeDescription;
+ return extendedType.getTranslation(); // extendedTypeDescription;
}
@@ -959,7 +970,7 @@
default:
case InvalidData:
case None:
- return ic.getMessage(MeterValuesEntryDataType.InvalidData.getDescription());
+ return MeterValuesEntryDataType.InvalidData.getTranslation();
}
}
@@ -977,17 +988,17 @@
if (this.hasBGEntry())
{
- values.put(ic.getMessage("BG") + ": ", getDisplayableBgValueWithUnit());
+ values.put(MeterValuesEntryDataType.BG.getTranslation() + ": ", getDisplayableBgValueWithUnit());
}
if (this.hasCHEntry())
{
- values.put(ic.getMessage("CH") + ": ", da.getFormatedValue(this.ch, 1));
+ values.put(MeterValuesEntryDataType.CH.getTranslation() + ": ", da.getFormatedValue(this.ch, 1));
}
if (this.hasUrine())
{
- values.put(ic.getMessage("URINE") + ": ", //
+ values.put(MeterValuesEntryDataType.Urine.getTranslation() + ": ", //
getUrineValue());
}
Modified: trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/MeterValuesEntryDataType.java
===================================================================
--- trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/MeterValuesEntryDataType.java 2017-06-19 18:10:37 UTC (rev 1457)
+++ trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/MeterValuesEntryDataType.java 2017-06-24 11:31:09 UTC (rev 1458)
@@ -2,6 +2,8 @@
import java.util.HashMap;
+import com.atech.i18n.I18nControlAbstract;
+
/**
* Created by andy on 02.05.15.
*/
@@ -20,8 +22,24 @@
static HashMap<Integer, String> allowedPumpTypes;
static HashMap<MeterValuesEntryDataType, String> processorTypes;
boolean isProcessor;
+ String translation;
+ static boolean translated = false;
+ public static void translateKeywords(I18nControlAbstract ic)
+ {
+ if (translated)
+ return;
+
+ for (MeterValuesEntryDataType pbt : values())
+ {
+ pbt.translation = ic.getMessage(pbt.description);
+ }
+
+ translated = true;
+ }
+
+
MeterValuesEntryDataType(String description, Integer pumpExtCode, boolean isProcessor)
{
this.description = description;
@@ -72,4 +90,10 @@
{
return description;
}
+
+
+ public String getTranslation()
+ {
+ return this.translation;
+ }
}
Modified: trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/db/GGCMeterDb.java
===================================================================
--- trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/db/GGCMeterDb.java 2017-06-19 18:10:37 UTC (rev 1457)
+++ trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/data/db/GGCMeterDb.java 2017-06-24 11:31:09 UTC (rev 1458)
@@ -2,9 +2,8 @@
import java.util.*;
-import org.hibernate.Criteria;
import org.hibernate.Query;
-import org.hibernate.criterion.Projections;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -13,7 +12,7 @@
import com.atech.graphics.graphs.v2.data.GraphDefinitionDto;
import com.atech.graphics.graphs.v2.data.GraphTimeDataCollection;
-import ggc.core.db.hibernate.DayValueH;
+import ggc.core.db.hibernate.pen.DayValueH;
import ggc.core.db.hibernate.pump.PumpDataExtendedH;
import ggc.meter.data.MeterDataReader;
import ggc.meter.data.MeterValuesEntry;
@@ -42,8 +41,8 @@
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
* Place, Suite 330, Boston, MA 02111-1307 USA
*
- * Filename: ###---###
- * Description:
+ * Filename: GGCMeterDb
+ * Description: Database handler for Meter Plugin
*
* Author: Andy {an...@at...}
*/
@@ -62,9 +61,7 @@
*/
public GGCMeterDb(HibernateDb db)
{
- super(db);
-
- // getAllElementsCount();
+ super(db, DataAccessMeter.getInstance());
}
@@ -75,31 +72,15 @@
*/
public int getAllElementsCount()
{
- try
- {
- Integer in = null;
- int sum_all = 0;
- Criteria criteria = this.getSession().createCriteria(DayValueH.class);
- criteria.add(Restrictions.eq("person_id", (int) m_da.getCurrentUserId()));
- criteria.add(Restrictions.or(
- Restrictions.or(Restrictions.gt("bg", 0), Restrictions.like("extended", "%URINE%")),
- Restrictions.gt("ch", 0.0f)));
- criteria.add(Restrictions.like("extended", "%" + m_da.getSourceDevice() + "%"));
- criteria.setProjection(Projections.rowCount());
- in = (Integer) criteria.list().get(0);
- sum_all = in.intValue();
+ int sumAll = getAllElementsCount(DayValueH.class, //
+ Arrays.asList(
+ Restrictions.or(Restrictions.or(Restrictions.gt("bg", 0), Restrictions.like("extended", "%URINE%")),
+ Restrictions.gt("ch", 0.0f))));
- LOG.debug("Old Meter Data in Db: " + in.intValue());
+ LOG.debug("Old Meter Data in Db: " + sumAll);
- return sum_all;
- }
- catch (Exception ex)
- {
- LOG.error("getAllElementsCount: " + ex, ex);
- ex.printStackTrace();
- return 0;
- }
+ return sumAll;
}
@@ -110,9 +91,9 @@
*
* @return
*/
- public Hashtable<String, DeviceValuesEntryInterface> getMeterValues(MeterDataReader mdr)
+ public Map<String, DeviceValuesEntryInterface> getMeterValues(MeterDataReader mdr)
{
- Hashtable<String, DeviceValuesEntryInterface> ht = new Hashtable<String, DeviceValuesEntryInterface>();
+ Map<String, DeviceValuesEntryInterface> ht = new HashMap<String, DeviceValuesEntryInterface>();
LOG.info("getMeterValues()");
@@ -120,30 +101,28 @@
try
{
-
LOG.debug("getMeterValues() - Process");
- Query q = this.getSession().createQuery(" SELECT dv from ggc.core.db.hibernate.DayValueH as dv " + //
- " WHERE ((dv.bg>0) OR (dv.extended LIKE '%URINE%') OR (dv.ch>0)) " + //
- " AND person_id=" + m_da.getCurrentUserId() + //
- " AND dv.extended like '%" + m_da.getSourceDevice() + "%' " + //
- " ORDER BY dv.dt_info ASC");
+ List<DayValueH> hibernateData = getHibernateData(DayValueH.class, //
+ Arrays.asList(Restrictions.eq("personId", (int) m_da.getCurrentUserId()), //
+ Restrictions.or(
+ Restrictions.or(Restrictions.gt("bg", 0), //
+ Restrictions.like("extended", "%URINE%")), //
+ Restrictions.gt("ch", 0.0f)), //
+ Restrictions.like("extended", "%" + m_da.getSourceDevice() + "%")), //
+ Arrays.asList(Order.asc("dtInfo")));
- // System.out.println("Found elements: " + q.list().size());
-
- Iterator<?> it = q.list().iterator();
-
int counter = 0;
mdr.writeStatus(counter);
- while (it.hasNext())
+ for (DayValueH dayValueH : hibernateData)
{
counter++;
- MeterValuesEntry mves = new MeterValuesEntry((DayValueH) it.next());
+ MeterValuesEntry mves = new MeterValuesEntry(dayValueH);
- ht.put("" + mves.getSpecialId(), mves);
+ ht.put(mves.getSpecialId(), mves);
mdr.writeStatus(counter);
}
@@ -168,8 +147,7 @@
* @param timeMarks
* @return
*/
- public Hashtable<String, PumpDataExtendedH> getPumpData(
- HashMap<Long, HashMap<MeterValuesEntryDataType, Object>> timeMarks)
+ public Map<String, PumpDataExtendedH> getPumpData(Map<Long, HashMap<MeterValuesEntryDataType, Object>> timeMarks)
{
Hashtable<String, PumpDataExtendedH> pumpData = new Hashtable<String, PumpDataExtendedH>();
@@ -180,6 +158,7 @@
{
LOG.debug("getPumpData() - Process");
+ // FIXME
Query q = this.getSession().createQuery(
" SELECT dv FROM ggc.core.db.hibernate.pump.PumpDataExtendedH as dv " + " WHERE dv.person_id="
+ m_da.getCurrentUserId() + " AND dv.dt_info IN " + getDataListForSQL(timeMarks)
@@ -192,8 +171,8 @@
{
PumpDataExtendedH pde = (PumpDataExtendedH) it.next();
- int time = (int) (pde.getDt_info() / 100); // same time as in
- // DailyValueH
+ int time = (int) (pde.getDtInfo() / 100); // same time as in
+ // DailyValueH
pumpData.put(time + "_" + pde.getType(), pde);
}
@@ -214,10 +193,10 @@
* @return
* @deprecated
*/
- public Hashtable<Long, MeterValuesEntry> getMeterData(Hashtable<Long, String> timeMarks)
+ public Map<Long, MeterValuesEntry> getMeterData(Hashtable<Long, String> timeMarks)
{
- Hashtable<Long, MeterValuesEntry> meter_data = new Hashtable<Long, MeterValuesEntry>();
+ Map<Long, MeterValuesEntry> meter_data = new HashMap<Long, MeterValuesEntry>();
if (timeMarks.size() == 0)
return meter_data;
@@ -227,7 +206,7 @@
LOG.debug("getMeterData() - Process");
Query q = this.getSession().createQuery( //
- " SELECT dv from ggc.core.db.hibernate.DayValueH as dv " + //
+ " SELECT dv from ggc.core.db.hibernate.pen.DayValueH as dv " + //
" WHERE person_id=" + m_da.getCurrentUserId() + //
" AND dv.dt_info IN " + getDataListForSQL(timeMarks) + //
" ORDER BY dv.dt_info ASC");
@@ -251,21 +230,20 @@
}
- private String getDataListForSQL(Hashtable<?, ?> ht)
- {
- StringBuffer sb = new StringBuffer();
- sb.append(" (");
+ // private String getDataListForSQL(Map<?, ?> ht)
+ // {
+ // StringBuffer sb = new StringBuffer();
+ // sb.append(" (");
+ //
+ // for (Enumeration<?> en = ht.keys(); en.hasMoreElements();)
+ // {
+ // sb.append(en.nextElement() + ", ");
+ // }
+ //
+ // return sb.substring(0, sb.length() - 2) + ")";
+ // }
- for (Enumeration<?> en = ht.keys(); en.hasMoreElements();)
- {
- sb.append(en.nextElement() + ", ");
- }
-
- return sb.substring(0, sb.length() - 2) + ")";
- }
-
-
- private String getDataListForSQL(HashMap<?, ?> ht)
+ private String getDataListForSQL(Map<?, ?> ht)
{
StringBuffer sb = new StringBuffer();
sb.append(" (");
Modified: trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/defs/GlucoseMeterMarker.java
===================================================================
--- trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/defs/GlucoseMeterMarker.java 2017-06-19 18:10:37 UTC (rev 1457)
+++ trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/defs/GlucoseMeterMarker.java 2017-06-24 11:31:09 UTC (rev 1458)
@@ -10,6 +10,7 @@
HighGlucose("MARKER_HI"), //
PreMeal("MARKER_PRE_MEAL"), //
PostMeal("MARKER_POST_MEAL"), //
+ PostMealTime("MARKER_POST_MEAL_TIME"), //
DontFeelRight("MARKER_DONT_FEEL_RIGHT"), //
Sick("MARKER_SICK"), //
Stress("MARKER_STRESS"), //
@@ -16,7 +17,11 @@
Activity("MARKER_ACTIVITY"), //
ControlResult("MARKER_CONTROL_RESULT"), //
AfterFoodWithTime("MARKER_AFTER_FOOD"), //
- ;
+ MealLevel1("MARKER_MEAL_LEVEL_1"), //
+ MealLevel2("MARKER_MEAL_LEVEL_2"), //
+ MealLevel3("MARKER_MEAL_LEVEL_3"), //
+ Hypoglycemia("MARKER_HYPO"), //
+ BedTime("MARKER_BED_TIME");
private String description;
Modified: trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/defs/MeterPluginDefinition.java
===================================================================
--- trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/defs/MeterPluginDefinition.java 2017-06-19 18:10:37 UTC (rev 1457)
+++ trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/defs/MeterPluginDefinition.java 2017-06-24 11:31:09 UTC (rev 1458)
@@ -3,6 +3,9 @@
import java.util.ArrayList;
import java.util.List;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import com.atech.app.data.about.CreditsEntry;
import com.atech.app.data.about.CreditsGroup;
import com.atech.app.data.about.FeaturesEntry;
@@ -10,10 +13,8 @@
import com.atech.i18n.mgr.LanguageManager;
import ggc.core.plugins.GGCPluginType;
-import ggc.meter.device.ascensia.AscensiaUsbMeterHandler;
import ggc.meter.util.GGCMeterICRunner;
import ggc.plugin.defs.DevicePluginDefinitionAbstract;
-import ggc.plugin.device.mgr.DeviceHandlerManager;
import ggc.plugin.graph.PluginGraphDefinition;
import ggc.plugin.list.BaseListEntry;
import ggc.plugin.report.PluginReportDefinition;
@@ -24,13 +25,20 @@
public class MeterPluginDefinition extends DevicePluginDefinitionAbstract
{
- String PLUGIN_VERSION = "2.4.1";
- String PLUGIN_NAME = "GGC Meter Plugin";
+ private static final Logger LOG = LoggerFactory.getLogger(MeterPluginDefinition.class);
+ private static String PLUGIN_NAME = "GGC Meter Plugin";
+
public MeterPluginDefinition(LanguageManager languageManager)
{
- super(languageManager, new GGCMeterICRunner());
+ super(languageManager, //
+ new GGCMeterICRunner(), //
+ PLUGIN_NAME, //
+ GGCPluginType.MeterToolPlugin, //
+ "meters_", //
+ "ggc.meter.defs.Version");
+
}
@@ -118,6 +126,8 @@
outList.add(new FeaturesEntry("Accu-Chek/Roche: All supported by SmartPix 3.x"));
outList.add(new FeaturesEntry("LifeScan: Ultra, Profile, Easy, UltraSmart"));
outList.add(new FeaturesEntry("Abbott: Optium Xceeed, PrecisionXtra, Frestyle"));
+ outList.add(new FeaturesEntry("Menarini: most newer models (NOT TESTED)"));
+ outList.add(new FeaturesEntry("Arkray: some models (NOT TESTED)"));
return outList;
}
@@ -127,33 +137,15 @@
{
List<FeaturesEntry> outList = new ArrayList<FeaturesEntry>();
- outList.add(new FeaturesEntry("LifeScan: Ultra2 (in 2017)"));
- outList.add(new FeaturesEntry("Wellion: Calla, Luna (in 2017 ?)"));
- outList.add(new FeaturesEntry("Menarini: most newer models (in 2017 ?)"));
- outList.add(new FeaturesEntry("Arkray: some models (in 2017 ?)"));
+ outList.add(new FeaturesEntry("LifeScan: Ultra2 (in 2018)"));
+ outList.add(new FeaturesEntry("Wellion: Calla, Luna (in 2017-18)"));
+ //outList.add(new FeaturesEntry("Menarini: most newer models (in 2017 ?)"));
+ //outList.add(new FeaturesEntry("Arkray: some models (in 2017 ?)"));
return outList;
}
- public String getPluginVersion()
- {
- return this.PLUGIN_VERSION;
- }
-
-
- public String getPluginName()
- {
- return this.PLUGIN_NAME;
- }
-
-
- public GGCPluginType getPluginType()
- {
- return GGCPluginType.MeterToolPlugin;
- }
-
-
@Override
public List<BaseListEntry> getWebListerItems()
{
@@ -178,13 +170,6 @@
@Override
- public String getWebListerDescription()
- {
- return this.i18nControl.getMessage("DEVICE_LIST_WEB_DESC");
- }
-
-
- @Override
public PluginReportDefinition getReportsDefinition()
{
// no reports for this plugin
@@ -199,19 +184,4 @@
return null;
}
-
- @Override
- public String getPluginActionsPrefix()
- {
- return "meters_";
- }
-
-
- @Override
- public void registerDeviceHandlers()
- {
- // Ascensia
- DeviceHandlerManager.getInstance().addDeviceHandler(new AscensiaUsbMeterHandler());
- }
-
}
Modified: trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/defs/device/MeterDeviceDefinition.java
===================================================================
--- trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/defs/device/MeterDeviceDefinition.java 2017-06-19 18:10:37 UTC (rev 1457)
+++ trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/defs/device/MeterDeviceDefinition.java 2017-06-24 11:31:09 UTC (rev 1458)
@@ -3,6 +3,9 @@
import java.util.ArrayList;
import java.util.List;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import ggc.meter.device.MeterDisplayInterfaceType;
import ggc.plugin.data.enums.DeviceCompanyDefinition;
import ggc.plugin.data.enums.DeviceHandlerType;
@@ -17,7 +20,10 @@
*/
public enum MeterDeviceDefinition implements DeviceDefinition
{
+
+ // --------------------
// Ascensia
+ // --------------------
AscensiaContourUsb(10007, "Contour USB", "ascensia_contour_usb.jpg", //
"INSTRUCTIONS_ASCENSIA_CONTOUR_USB", null, DeviceImplementationStatus.Done, //
DeviceCompanyDefinition.Ascensia, DeviceHandlerType.AscensiaUsbHandler, //
@@ -42,9 +48,19 @@
DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.USB_Hid, DeviceProgressStatus.Special, "",
2000, MeterDisplayInterfaceType.Simple),
+ AscensiaContourNextOne(10011, "Contour Next One", "ascensia_contour_next_one.png", //
+ "INSTRUCTIONS_ASCENSIA_CONTOUR_USB", null, DeviceImplementationStatus.Done, //
+ DeviceCompanyDefinition.Ascensia, DeviceHandlerType.AscensiaUsbHandler,
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.USB_Hid, DeviceProgressStatus.Special, "",
+ 2000, MeterDisplayInterfaceType.Simple),
+
+ // -- Missing: Contour Next EZ, Contour Next Link 2.4, Didget, Contour XT ?
+ // -- Planned: Contour Next Link 2.4 (Test with current usb code)
+ // -- Not planned: Contour Next EZ, Didget, Contour XT (this might actually work without any changes)
+
+ // --------------------
// AccuChek
-
- // FIXME
+ // --------------------
AccuChekSmartPixGeneric(20001, "SmartPix", "ac_active.jpg", //
"INSTRUCTIONS_ACCUCHEK_ACTIVE", null, DeviceImplementationStatus.Done, //
DeviceCompanyDefinition.Roche, DeviceHandlerType.AccuChekMeterHandler, //
@@ -123,35 +139,139 @@
DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.MassStorageXML, //
DeviceProgressStatus.Normal, "", 500, MeterDisplayInterfaceType.Extended), //
- // FIXME - just for testing
- // MenariniGlucoMenReady(100011, "Menarini", null, //
- // "instructions", null, DeviceImplementationStatus.Planned,
- // DeviceCompanyDefinition.Menarini, DeviceHandlerType.MenariniMeterHandler,
- // //
- // DevicePortParameterType.SimpleParameter,
- // DeviceConnectionProtocol.USB_Hid, DeviceProgressStatus.Special, "",
- // 200, MeterDisplayInterfaceType.Simple), //
+ // -- Missing: Mobile, Connect, ...Connect
- ;
- // AccuChekActive.java
- // AccuChekAdvantage.java
- // AccuChekAvivaCombo.java
- // AccuChekAviva.java
- // AccuChekComfort.java
- // AccuChekCompact.java
- // AccuChekCompactPlus.java
- // AccuChekGo.java
- // AccuChekIntegra.java
- // AccuChekMeterHandler.java
- // AccuChekNano.java
- // AccuChekPerforma.java
- // AccuChekSensor.java
+ // --------------------
+ // Meanrini
+ // --------------------
+ MenariniGlucoFixId(50003, "GlucoFix ID", "mn_glucofix_id.png", //
+ "INSTRUCTIONS_MENARINI", null, DeviceImplementationStatus.Planned, //
+ DeviceCompanyDefinition.Menarini, DeviceHandlerType.MenariniMeterHandler, //
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.Serial_USBBridge, //
+ DeviceProgressStatus.Special, "", 250, MeterDisplayInterfaceType.Simple), //
- // Contour Next EZ, Contour Next Link 2.4, Didget, Contour XT ?
+ MenariniGlucoFixMio(50001, "GlucoFix Mio", "mn_glucofix_mio_plus.png", //
+ "INSTRUCTIONS_MENARINI", null, DeviceImplementationStatus.Planned, //
+ DeviceCompanyDefinition.Menarini, DeviceHandlerType.MenariniMeterHandler, //
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.Serial_USBBridge, //
+ DeviceProgressStatus.Special, "", 400, MeterDisplayInterfaceType.Simple), //
+ MenariniGlucoFixMioPlus(50002, "GlucoFix Mio Plus", "mn_glucofix_mio_plus.png", //
+ "INSTRUCTIONS_MENARINI", null, DeviceImplementationStatus.Planned, //
+ DeviceCompanyDefinition.Menarini, DeviceHandlerType.MenariniMeterHandler, //
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.Serial_USBBridge, //
+ DeviceProgressStatus.Special, "", 400, MeterDisplayInterfaceType.Extended), // ket,
+
+ MenariniGlucoFixPremium(50004, "GlucoFix Premium", "mn_glucofix_premium.png", //
+ "INSTRUCTIONS_MENARINI", null, DeviceImplementationStatus.Planned, //
+ DeviceCompanyDefinition.Menarini, DeviceHandlerType.MenariniMeterHandler, //
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.Serial_USBBridge, //
+ DeviceProgressStatus.Special, "", 400, MeterDisplayInterfaceType.Extended), // ket,
+
+ MenariniGlucoFixTech(50005, "GlucoFix Tech", "mn_glucofix_tech.png", //
+ "INSTRUCTIONS_MENARINI", null, DeviceImplementationStatus.Planned, //
+ DeviceCompanyDefinition.Menarini, DeviceHandlerType.MenariniMeterHandler, //
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.Serial_USBBridge, //
+ DeviceProgressStatus.Special, "", 730, MeterDisplayInterfaceType.Simple), //
+
+ MenariniGlucoMenVisio(50006, "GlucoMen Visio", "mn_glucomen_visio.png", //
+ "INSTRUCTIONS_MENARINI", null, DeviceImplementationStatus.Planned, //
+ DeviceCompanyDefinition.Menarini, DeviceHandlerType.MenariniMeterHandler, //
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.Serial_USBBridge, //
+ DeviceProgressStatus.Special, "", 250, MeterDisplayInterfaceType.Simple), //
+
+ MenariniGlucoMenGM(50007, "GlucoMen GM", "mn_glucomen_gm.png", //
+ "INSTRUCTIONS_MENARINI", null, DeviceImplementationStatus.Testing, //
+ DeviceCompanyDefinition.Menarini, DeviceHandlerType.MenariniMeterHandler, //
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.Serial_USBBridge, //
+ DeviceProgressStatus.Special, "", 250, MeterDisplayInterfaceType.Simple), //
+
+ MenariniGlucoMenPC(50014, "GlucoMen PC", "mn_glucomen_gm.png", //
+ "INSTRUCTIONS_MENARINI", null, DeviceImplementationStatus.Testing, //
+ DeviceCompanyDefinition.Menarini, DeviceHandlerType.MenariniMeterHandler, //
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.Serial_USBBridge, //
+ DeviceProgressStatus.Special, "", 250, MeterDisplayInterfaceType.Simple), //
+
+ MenariniGlucoMenLxPlus(50008, "GlucoMen Lx Plus", "mn_glucomen_lx_plus.png", //
+ "INSTRUCTIONS_MENARINI", null, DeviceImplementationStatus.Testing, //
+ DeviceCompanyDefinition.Menarini, DeviceHandlerType.MenariniMeterHandler, //
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.Serial_USBBridge, //
+ DeviceProgressStatus.Special, "", 400, MeterDisplayInterfaceType.Extended), // ket,
+
+ MenariniGlucoMenLx2(50009, "GlucoMen Lx 2", "mn_glucomen_lx2.png", //
+ "INSTRUCTIONS_MENARINI", null, DeviceImplementationStatus.Testing, //
+ DeviceCompanyDefinition.Menarini, DeviceHandlerType.MenariniMeterHandler, //
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.Serial_USBBridge, //
+ DeviceProgressStatus.Special, "", 400, MeterDisplayInterfaceType.Extended), // ket
+
+ MenariniGlucoMenMendor(50010, "GlucoMen Mendor", "mn_glucomen_ready.png", //
+ "INSTRUCTIONS_MENARINI", null, DeviceImplementationStatus.Testing, //
+ DeviceCompanyDefinition.Menarini, DeviceHandlerType.MenariniMeterHandler, //
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.Serial_USBBridge, //
+ DeviceProgressStatus.Special, "", 500, MeterDisplayInterfaceType.Simple), //
+
+ MenariniGlucoMenReady(50011, "GlucoMen Ready", "mn_glucomen_ready.png", //
+ "INSTRUCTIONS_MENARINI", null, DeviceImplementationStatus.Testing, //
+ DeviceCompanyDefinition.Menarini, DeviceHandlerType.MenariniMeterHandler, //
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.Serial_USBBridge, //
+ DeviceProgressStatus.Special, "", 500, MeterDisplayInterfaceType.Simple), //
+
+ MenariniGlucoMenAreo(50012, "GlucoMen Areo", "mn_glucomen_areo.png", //
+ "INSTRUCTIONS_MENARINI", null, DeviceImplementationStatus.Testing, //
+ DeviceCompanyDefinition.Menarini, DeviceHandlerType.MenariniMeterHandler, //
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.Serial_USBBridge, //
+ DeviceProgressStatus.Special, "", 730, MeterDisplayInterfaceType.Simple), //
+
+ MenariniGlucoMenAreo2k(50013, "GlucoMen Areo 2K", "mn_glucomen_areo_2k.png", //
+ "INSTRUCTIONS_MENARINI", null, DeviceImplementationStatus.Testing, //
+ DeviceCompanyDefinition.Menarini, DeviceHandlerType.MenariniMeterHandler, //
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.Serial_USBBridge, //
+ DeviceProgressStatus.Special, "", 830, MeterDisplayInterfaceType.Extended), // ket,
+
+
+ // --------------------
+ // Arkray
+ // --------------------
+ ArkrayGlucoXMeter(60003, "Arkray Glucocard X-Meter", "ark_glucocard_sm.png", //
+ "INSTRUCTIONS_ARKRAY", null, DeviceImplementationStatus.Testing, //
+ DeviceCompanyDefinition.Arkray, DeviceHandlerType.ArkrayMeterHandler, //
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.USB_Hid, //
+ DeviceProgressStatus.Special, "", 0, MeterDisplayInterfaceType.Simple), //
+
+ ArkrayGT_1810(60004, "Arkray Glucocard G+ (1810)", "ark_glucocard_gplus.png", //
+ "INSTRUCTIONS_ARKRAY", null, DeviceImplementationStatus.Testing, //
+ DeviceCompanyDefinition.Arkray, DeviceHandlerType.ArkrayMeterHandler, //
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.Serial_USBBridge, //
+ DeviceProgressStatus.Special, "", 450, MeterDisplayInterfaceType.Simple), //
+
+ ArkrayGT_1820(60005, "Arkray Glucocard G+ (1820)", "ark_glucocard_gplus.png", //
+ "INSTRUCTIONS_ARKRAY", null, DeviceImplementationStatus.Testing, //
+ DeviceCompanyDefinition.Arkray, DeviceHandlerType.ArkrayMeterHandler, //
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.Serial_USBBridge, //
+ DeviceProgressStatus.Special, "", 450, MeterDisplayInterfaceType.Simple), //
+
+ ArkrayGlucoCardMX(60006, "Arkray Glucocard MX", "ark_glucocard_mx.png", //
+ "INSTRUCTIONS_ARKRAY", null, DeviceImplementationStatus.Testing, //
+ DeviceCompanyDefinition.Arkray, DeviceHandlerType.ArkrayMeterHandler, //
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.Serial_USBBridge, //
+ DeviceProgressStatus.Special, "", 500, MeterDisplayInterfaceType.Simple), //
+
+ ArkrayGlucoCardSM(60007, "Arkray Glucocard SM", "ark_glucocard_sm.png", //
+ "INSTRUCTIONS_ARKRAY", null, DeviceImplementationStatus.Testing, //
+ DeviceCompanyDefinition.Arkray, DeviceHandlerType.ArkrayMeterHandler, //
+ DevicePortParameterType.SimpleParameter, DeviceConnectionProtocol.USB_Hid, //
+ DeviceProgressStatus.Special, "", 500, MeterDisplayInterfaceType.Simple), //
+
+ // Missing: Implementations there but incomplete: ArkrayGlucoCardPlus() [450], ArkrayGlucoCard(), ArkrayGlucoCardMemoryPC(),
+
+
+
+ ;
+
static List<DeviceDefinition> allDevices;
static List<DeviceDefinition> supportedDevices;
+ private static final Logger LOG = LoggerFactory.getLogger(MeterDeviceDefinition.class);
static
{
@@ -168,19 +288,19 @@
}
}
- System.out.println(
- "Meter Devices V2 (registered: " + allDevices.size() + ", supported: " + supportedDevices.size() + ")");
+ // LOG.info("Meter Devices V2 (registered: " + allDevices.size() +
+ // ", supported: " + supportedDevices.size() + ")");
}
// we need to extend this to all values currently in DeviceImplementation
int deviceId;
- String deviceName;
+ String deviceName = "no name";
String iconName;
String instructions;
Object internalDefintion;
DeviceImplementationStatus implementationStatus;
DeviceCompanyDefinition companyDefinition;
- DeviceHandlerType deviceHandlerType;
+ DeviceHandlerType deviceHandlerType = DeviceHandlerType.NullHandler;
DevicePortParameterType devicePortParameterType;
DeviceConnectionProtocol deviceConnectionProtocol;
DeviceProgressStatus deviceProgressStatus;
@@ -188,8 +308,14 @@
int maxRecords;
MeterDisplayInterfaceType displayInterfaceType;
+ @Deprecated
+ MeterDeviceDefinition()
+ {
- private MeterDeviceDefinition(int id, String name, String iconName, String instructions, Object internalDefinition,
+ }
+
+
+ MeterDeviceDefinition(int id, String name, String iconName, String instructions, Object internalDefinition,
DeviceImplementationStatus implementationStatus, DeviceCompanyDefinition companyDefinition,
DeviceHandlerType deviceHandlerType, DevicePortParameterType portParameterType,
DeviceConnectionProtocol connectionProtocol, DeviceProgressStatus progressStatus, String specialComment,
Modified: trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/defs/device/MeterDeviceHandler.java
===================================================================
--- trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/defs/device/MeterDeviceHandler.java 2017-06-19 18:10:37 UTC (rev 1457)
+++ trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/defs/device/MeterDeviceHandler.java 2017-06-24 11:31:09 UTC (rev 1458)
@@ -1,5 +1,6 @@
package ggc.meter.defs.device;
+import ggc.core.plugins.GGCPluginType;
import ggc.meter.util.DataAccessMeter;
import ggc.plugin.device.v2.DeviceDefinition;
import ggc.plugin.device.v2.DeviceHandlerAbstract;
@@ -37,4 +38,20 @@
dataAccessMeter = DataAccessMeter.getInstance();
}
+
+ protected DataAccessMeter getDataAccess()
+ {
+ checkIfDataAccessSet();
+ return dataAccessMeter;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public GGCPluginType getGGCPluginType()
+ {
+ return GGCPluginType.MeterToolPlugin;
+ }
+
}
Modified: trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/DummyMeter.java
===================================================================
--- trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/DummyMeter.java 2017-06-19 18:10:37 UTC (rev 1457)
+++ trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/DummyMeter.java 2017-06-24 11:31:09 UTC (rev 1458)
@@ -43,7 +43,7 @@
}
// DataAccessMeter dataAccess = DataAccessMeter.getInstance();
- // I18nControlAbstract m_ic = dataAccess.getI18nControlInstance();
+ // I18nControlAbstract i18nControl = dataAccess.getI18nControlInstance();
/**
* This is method for reading data from device. All reading from actual device should be done from here.
Modified: trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/SerialMeterAbstract.java
===================================================================
--- trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/SerialMeterAbstract.java 2017-06-19 18:10:37 UTC (rev 1457)
+++ trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/SerialMeterAbstract.java 2017-06-24 11:31:09 UTC (rev 1458)
@@ -1,6 +1,7 @@
package ggc.meter.device;
import java.io.EOFException;
+import java.util.List;
import java.util.Set;
import org.slf4j.Logger;
@@ -9,7 +10,9 @@
import com.atech.utils.data.ATechDate;
import com.atech.utils.data.ATechDateType;
+import ggc.core.data.ExtendedDailyValueType;
import ggc.core.data.defs.GlucoseUnitType;
+import ggc.meter.data.GlucoseMeterMarkerDto;
import ggc.meter.data.MeterValuesEntry;
import ggc.meter.defs.device.MeterDeviceDefinition;
import ggc.meter.util.DataAccessMeter;
@@ -29,6 +32,17 @@
private static final Logger LOG = LoggerFactory.getLogger(SerialMeterAbstract.class);
+ public static final char STX = '\002';
+ public static final char ETX = '\003';
+ public static final char EOT = '\004';
+ public static final char ENQ = '\005';
+ public static final char ACK = '\006';
+ public static final char ETB = '\027';
+ public static final char LF = '\n';
+ public static final char CR = '\r';
+ public static final char NAK = '\025';
+ public static final char CAN = '\030';
+
protected DataAccessMeter dataAccess;
protected OutputWriter outputWriter;
protected NRSerialCommunicationHandler communicationHandler;
@@ -36,7 +50,7 @@
protected boolean active = false;
protected String serialNumber;
protected MeterDeviceDefinition deviceDefinition;
- protected GlucoseUnitType glucoseUnitType;
+ protected GlucoseUnitType glucoseUnitType = GlucoseUnitType.mg_dL;
private int receiveTimeout;
@@ -67,6 +81,12 @@
}
+ public void closeDevice()
+ {
+ this.communicationHandler.disconnectDevice();
+ }
+
+
protected abstract void preInitDevice() throws PlugInBaseException;
@@ -141,7 +161,7 @@
}
- protected char readChar() throws Exception
+ protected char readChar() throws PlugInBaseException
{
int rv = -1;
@@ -158,10 +178,10 @@
{
if (this.active)
{
- throw new EOFException("Serial port timeout on " + this.portName);
+ throw new PlugInBaseException("Serial port timeout on " + this.portName);
}
- throw new InterruptedException();
+ throw new PlugInBaseException(PlugInExceptionType.TimeoutReadingData);
}
return (char) rv;
}
@@ -174,6 +194,7 @@
{
if (s == null)
return null;
+
if (s.length() <= size)
{
return s;
@@ -203,7 +224,8 @@
protected void disconnectDevice()
{
- this.communicationHandler.disconnectDevice();
+ if (this.communicationHandler != null)
+ this.communicationHandler.disconnectDevice();
this.active = false;
}
@@ -226,6 +248,18 @@
}
+ protected void writeDeviceIdentification(String serialNumber)
+ {
+ DeviceIdentification deviceIdentification = new DeviceIdentification(dataAccess.getI18nControlInstanceBase());
+ deviceIdentification.setDeviceDefinition(this.deviceDefinition);
+ deviceIdentification.device_serial_number = serialNumber;
+ this.serialNumber = serialNumber;
+
+ outputWriter.setDeviceIdentification(deviceIdentification);
+ outputWriter.writeDeviceIdentification();
+ }
+
+
public void setGlucoseUnitType(GlucoseUnitType glucoseUnitType)
{
this.glucoseUnitType = glucoseUnitType;
@@ -242,6 +276,77 @@
}
+ public void writeBGData(float bg, ATechDate aTechDate)
+ {
+ MeterValuesEntry mve = new MeterValuesEntry();
+ mve.setBgValue(bg, glucoseUnitType);
+ mve.setDateTimeObject(aTechDate);
+
+ this.outputWriter.writeData(mve);
+ }
+
+
+ public void writeBGData(float bg, GlucoseUnitType unitType, ATechDate aTechDate)
+ {
+ MeterValuesEntry mve = new MeterValuesEntry();
+ mve.setBgValue(bg, unitType);
+ mve.setDateTimeObject(aTechDate);
+
+ this.outputWriter.writeData(mve);
+ }
+
+
+ public void writeBGData(float bg, GlucoseUnitType unitType, ATechDate aTechDate,
+ List<GlucoseMeterMarkerDto> markers)
+ {
+ MeterValuesEntry mve = new MeterValuesEntry();
+ mve.setBgValue(bg, unitType);
+ mve.setDateTimeObject(aTechDate);
+
+ for (GlucoseMeterMarkerDto marker : markers)
+ mve.addGlucoseMeterMarker(marker);
+
+ this.outputWriter.writeData(mve);
+ }
+
+
+ public void writeUrineData(Float value, GlucoseUnitType unitType, ATechDate adt)
+ {
+ if (value == null)
+ return;
+
+ MeterValuesEntry mve = new MeterValuesEntry();
+
+ mve.setDateTimeObject(adt);
+
+ float urineMmoL = value;
+
+ if (unitType == GlucoseUnitType.mg_dL)
+ {
+ urineMmoL = dataAccess.getBGValueByType(GlucoseUnitType.mg_dL, GlucoseUnitType.mmol_L, value);
+ }
+
+ mve.setUrine(ExtendedDailyValueType.Urine_mmolL, dataAccess.getFormatedValue(urineMmoL, 1));
+
+ this.outputWriter.writeData(mve);
+
+ }
+
+
+ public void writeBGData(float bg, int year, int month, int day, int hour, int minute,
+ List<GlucoseMeterMarkerDto> markers)
+ {
+ MeterValuesEntry mve = new MeterValuesEntry();
+ mve.setBgValue(bg, glucoseUnitType);
+ mve.setDateTimeObject(getATechDate(year, month, day, hour, minute));
+
+ for (GlucoseMeterMarkerDto marker : markers)
+ mve.addGlucoseMeterMarker(marker);
+
+ this.outputWriter.writeData(mve);
+ }
+
+
public ATechDate getATechDate(int year, int month, int day, int hour, int minute)
{
return new ATechDate(day, month, year, hour, minute, ATechDateType.DateAndTimeMin);
@@ -253,4 +358,19 @@
communicationHandler.read(data);
}
+
+ public void readUntilCharacterReceived(char character) throws PlugInBaseException
+ {
+ char c;
+
+ while ((c = readChar()) != character)
+ ;
+ }
+
+
+ public void readUntilACKReceived() throws PlugInBaseException
+ {
+ readUntilCharacterReceived(ACK);
+ }
+
}
Modified: trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/UsbMeterAbstract.java
===================================================================
--- trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/UsbMeterAbstract.java 2017-06-19 18:10:37 UTC (rev 1457)
+++ trunk/ggc-plugins/ggc-meter/src/main/java/ggc/meter/device/UsbMeterAbstract.java 2017-06-24 11:31:09 UTC (rev 1458)
@@ -1,9 +1,7 @@
package ggc.meter.device;
import java.io.EOFException;
-import java.util.ArrayList;
import java.util.List;
-import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -12,20 +10,18 @@
import com.atech.utils.data.ATechDateType;
import ggc.core.data.defs.GlucoseUnitType;
+import ggc.meter.data.GlucoseMeterMarkerDto;
import ggc.meter.data.MeterValuesEntry;
import ggc.meter.defs.device.MeterDeviceDefinition;
import ggc.meter.util.DataAccessMeter;
-import ggc.plugin.comm.NRSerialCommunicationHandler;
-import ggc.plugin.comm.cfg.SerialSettings;
+import ggc.plugin.comm.Hid4JavaCommunicationHandler;
import ggc.plugin.comm.cfg.USBDevice;
-import ggc.plugin.data.GGCPlugInFileReaderContext;
-import ggc.plugin.data.enums.PlugInExceptionType;
import ggc.plugin.device.DeviceIdentification;
-import ggc.plugin.device.DownloadSupportType;
import ggc.plugin.device.PlugInBaseException;
import ggc.plugin.device.v2.DeviceDefinition;
import ggc.plugin.output.OutputWriter;
+// TODO
/**
* This is abstract class for Usb meters, that works with new framework (MeterInterface2).
*/
@@ -32,17 +28,17 @@
public abstract class UsbMeterAbstract
{
- private static final Logger LOG = LoggerFactory.getLogger(SerialMeterAbstract.class);
+ private static final Logger LOG = LoggerFactory.getLogger(UsbMeterAbstract.class);
protected DataAccessMeter dataAccess;
protected OutputWriter outputWriter;
- protected NRSerialCommunicationHandler communicationHandler;
- protected String portName;
+ protected Hid4JavaCommunicationHandler communicationHandler;
protected boolean active = false;
protected String serialNumber;
protected MeterDeviceDefinition deviceDefinition;
protected GlucoseUnitType glucoseUnitType;
private int receiveTimeout;
+ protected List<USBDevice> allowedDevicesList;
public UsbMeterAbstract(DataAccessMeter dataAccess, OutputWriter outputWriter,
@@ -50,14 +46,20 @@
{
this.dataAccess = dataAccess;
this.outputWriter = outputWriter;
- this.portName = portName;
this.deviceDefinition = deviceDefinition;
+ createAllowedDevicesList();
}
+ /**
+ * Creates list of Allowed USB devices for this implementation.
+ */
+ protected abstract void createAllowedDevicesList();
+
+
public void readData() throws PlugInBaseException
{
- checkIfDevicePresentOnConfiguredPort();
+ // checkIfDevicePresentOnConfiguredPort();
connectDevice();
preInitDevice();
readDeviceData();
@@ -64,45 +66,27 @@
}
- private void connectDevice()
+ private void connectDevice() throws PlugInBaseException
{
- communicationHandler = new NRSerialCommunicationHandler(portName, getSerialSettings());
+ communicationHandler = new Hid4JavaCommunicationHandler();
+ communicationHandler.setAllowedDevices(allowedDevicesList);
+ communicationHandler.setDelayForTimedReading(100);
communicationHandler.connectAndInitDevice();
this.active = true;
}
+ public void closeDevice() throws PlugInBaseException
+ {
+ communicationHandler.disconnectDevice();
+ }
+
+
protected abstract void preInitDevice() throws PlugInBaseException;
private void checkIfDevicePresentOnConfiguredPort() throws PlugInBaseException
{
- Set<String> availablePorts = NRSerialCommunicationHandler.getAvailablePorts();
-
- boolean found = false;
-
- for (String port : availablePorts)
- {
- if (port.equalsIgnoreCase(portName))
- {
- found = true;
- break;
- }
- }
-
- if (!found)
- {
- throw new PlugInBaseException(PlugInExceptionType.DeviceNotFoundOnConfiguredPort);
- // if (availablePorts.size() > 0)
- // {
- //
- // }
- // else
- // {
- // throw new
- // PlugInBaseException(PlugInExceptionType.DeviceNotFoundOnConfiguredPort);
- // }
- }
}
@@ -139,7 +123,7 @@
if (this.active)
{
- throw new EOFException("Serial port timeout on " + this.portName);
+ throw new EOFException("Serial port timeout on " + this.communicationHandler.getSelectedDevice());
}
return -1;
@@ -163,7 +147,7 @@
{
if (this.active)
{
- throw new EOFException("Serial port timeout on " + this.portName);
+ throw new EOFException("Serial port timeout on " + this.communicationHandler.getSelectedDevice());
}
throw new InterruptedException();
@@ -172,9 +156,6 @@
}
- public abstract Seria...
[truncated message content] |