- Merge-Quell-Branch auschecken
- Pull
- Merge-Zielbranch auschecken
- Rechtsklick auf Zielbranch und dann ‚Rebase on‘, dann Quell-Branch auswählen
- Bei Merge-Konflikten war es für mich immer am einfachsten ich habe die Dateien, die Konflikte aufwiesen roh angezeigt und die Konflikte, (markiert mit ‚>>>>>‘ und ‚<<<<‚) von Hand bereinigt. Danach müssen diese Dateien ‚added‘, ‚commited‘ und der Branch dann ‚gepushed‘ werden.
- Und fertig ist der Merge
Elastic Search Reating
Spezifische Feld-Auswahl bei CriteriaAPI Mehrfach-Joins
Folgendes Beispiel zeigt, wie man spezifische Felder aus einem Join für die Resultat-Tabelle selektiert, indem man eine eingene Empfängerklasse (hier Container) definiert und in CriteriaQuery.multiselect(..) die felder selektiert, die man eben in der Resultattabelle haben will.
Gelehrt hat mich dies diese Stackoverflow-Seite.
/** * Container, dem das spezifisch selektierten Feld übergeben wird */ public static class Container { private String orderList; private String businessCd; /** * CriteriaAPI übergibt an den Constructor. */ public Container(String orderList, String businessCd) { this.orderList = orderList; this.businessCd = businessCd; } public String getOrderList() { return orderList; } public String getBusinessCd() { return businessCd; } } Set<String> getWithCriteriApiExercise(UniqueId businessExecutionId) { CriteriaBuilder criteriaBuilder = daoProvider.getEntityManager().getCriteriaBuilder(); CriteriaQuery<Container> query = criteriaBuilder.createQuery(Container.class); // <-- !!! selbst definierte Empängerklasse (Container.class) Root<HpsBusiness> root = query.from(HpsBusiness.class); Join<HpsBusiness, HpsBusinessExec> joinBusiness = root.join(HpsBusiness._ATTR_businessExec, JoinType.INNER); //n:1 Join<HpsBusiness, HpsExcludedPos> joinExcludedPos = root.join(HpsBusiness._ATTR_excludedPosList, JoinType.INNER); //1:n query.multiselect(joinExcludedPos.get(HpsExcludedPos._ATTR_orderIdList), root.get(HpsBusiness._ATTR_businessCd)) // <-- !!! multiselect Methode benutzen!! .where(criteriaBuilder.and(criteriaBuilder.equal(joinBusiness.get(HpsBusinessExec._ATTR_id), businessExecutionId), criteriaBuilder.equal(joinExcludedPos.get(HpsExcludedPos._ATTR_reason), "deprecated"))); TypedQuery<Container> typedQuery = daoProvider.getEntityManager().createQuery(query); return typedQuery.getResultList().stream().map(c -> c.getOrderList() + "/" + c.getBusinessCd()).collect(Collectors.toSet()); // get the fields from Container }
Mehrfach-Join in CriteriaAPI
Beachte, dass bei den Joins sowohl in richtung n:1 als auch in Richtung 1:n (mit _ATTR_excludedPosList) referenziert wird!
Set<String> getBusinessTypesWithExclusions(UniqueId businessExecutionId) { CriteriaBuilder criteriaBuilder = daoProvider.getEntityManager().getCriteriaBuilder(); CriteriaQuery<HpsBusiness> query = criteriaBuilder.createQuery(HpsBusiness.class); Root<HpsBusiness> root = query.from(HpsBusiness.class); Join<HpsBusiness, HpsBusinessExec> joinBusiness = root.join(HpsBusiness._ATTR_businessExec, JoinType.INNER); // <-- n : 1 Join<HpsBusiness, HpsExcludedPos> joinExcludedPos = root.join(HpsBusiness._ATTR_excludedPosList, JoinType.INNER); // <-- 1 : n query.select(root).where(criteriaBuilder.and(criteriaBuilder.equal(joinBusiness.get(HpsBusinessExec._ATTR_id), businessExecutionId), criteriaBuilder.equal(joinExcludedPos.get(HpsExcludedPos._ATTR_exclusionReasonType), ExclusionReasonType.EXCLUDED.name()))); return daoProvider.getHpsBusinessDao().find(query).stream().map(HpsBusiness::getBusinessCd).collect(Collectors.toSet()); }
Starten mit WEMOS LOLIIN ESP32
Basiert auf dem Artikel „Smarte Helfer selbst gebaut“ im CT Heft Nr. 2018/2 S. 64ff.
Software-Links dazu.
Sehr guten Einstieg in den ESP32 bietet auch: https://youtu.be/xPlN_Tk3VLQ
Schritt 1: Arduino IDE herunter laden
Schritt 2: ESP32 SW-Ausrüstung in Arduino-IDE einspielen
Dazu ist es einfacher die Installation via „Board-Manager“ durchzuführen: Anleitung (aus der Espressive Page)
Anleitung Backup: Dazu unter Preferences ‚Additional Board Managers‘ den hier https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json eintragen (mehrere solche URL würden mit Komma separiert). Dann „Boards Manager“ aus „Tools > Board menu“ öffnen „esp32 platform“ installieren.
Schritt 3: CT Software Libraries einspielen
Vorgehen gemäss Heft. SW Links unter ct.de/y73t
Nachtrag 14.03.2021: Jedoch: Statt ‚Bootcamp‘ (SW library von CT) besser EspMQTTClient benutzen. -> Siehe unbedingt Dachfenster-Sensor mit Alarm auf dem Handy!
Stolperstein: (Nicht mehr relevant wenn EspMQTTClient benutzt wird)
Bei ArduinoJson ist auf dem GITHub bereits die Version 6. Basecamp arbeitet aber nur mit Version 5 zusammen. Zum Glück hat der Arduino IDE Library-Manager eine ArduinoJson Version 5 verfügbar. —> Installiere von dort!
Nachtrag: ct.de/y73t liefert die Bibliotheken auch direkt als ZIP. Da hätte man wahrscheinlich das Versionsproblem auch nicht.
Schritt 4: Sketch übertragen
CT stellt die Beispielcodes zu Verfügung. -> Z.B. Beispielcodes für Dachfenster-Sensor mit Alarm auf dem Handy (siehe dort)!
Zuerst Sketch in Editor der IDE laden.
Zu Übertragung:
– Unter ‚Tools‘ > ‚Board‘ das passende ESP Board einstellen. Unter dem ‚Board‘-Menu muss es ein ‚ESP32 Arduino‘-Menu haben, ansonsten ist wahrscheinlich Schritt 2 nicht richtig ausgeführt worden.
Wähle ‚WEMOS LOLIN32‚. Wenn der nicht geht ‚ESP32 Dev Module‚.
– Reduziere allenfalls die Übertragungsgeschwindigkeit
– Wähle den richtigen Port, nämlich jenen, der im Gerätemanager (devmgmt.msc (Windows)) unter „Anschlüsse (COM & LPT)“ die Bezeichnung „USB to UART Bridge“ trägt. Falls kein solcher vorliegt, sieh weiter unten, Stichwort ‚Übertragungsfehler‚.
– Menu ‚Sketch‘ > ‚Upload‘
– Die Meldung „Leaving… Hard resetting via RTS pin… “ ist nicht als Fehlermeldung zu betrachten.
Bei Übertragungsfehlern (typischerweise Timout) prüfen:
– Innerhalb des Gerätemanager (devmgmt.msc (Windows)) prüfen ob unter „Anschlüsse (COM & LPT)“ ein „Silicon Labs CP210x USB to UART Bridge“ vorhanden ist. Wenn nicht, liegt das eventuell daran, dass ein Wackel vorliegt. Kabel am ESP anpressen kann schon helfen, oder aber das USB Kabel wechseln. Möglich wäre auch das Windows tatsächlich den Treiber nicht installiert hat. Man ihn also manuell nachinstallieren müsste.
Criteria API – Tutorials
Criteria API: Join mit Filter auf beiden joined Tables
Der Knackpunkt is dieser:
Mit
Root<TabelleA> root = query.from(TabelleA.class)
wird die Ausgangstabelle (root) bezeichnet.
Mit
Join<TabelleA, TablleB> join = root.join(TabelleA.bRef);
wir HealthCheck hinzu ge-joined.
Wichig Referenzen (z.B. der Filter auf das Feld feldXY) müssen nun von join aus gehen:
join.get(TablleB.feldXY)
Oder die ganze Where-Clause:
.where(criteriaBuilder.equal(root.get(TabelleA.id), "id000001"), criteriaBuilder.like( join.get(TablleB.feldXY), "%gesuchterInhalt%"))
Ganze Beispiel
CriteriaBuilder criteriaBuilder = ippDaoProvider.getEntityManager().getCriteriaBuilder(); CriteriaQuery<TabelleA> query = criteriaBuilder.createQuery(TabelleA.class); Root<TabelleA> root = query.from(TabelleA.class); Join<TabelleA, TablleB> join = root.join(TabelleA.bRef); String healthCheckType = "BelowInvest"; query.select(root).where(criteriaBuilder.equal(root.get(TabelleA.id), "id000001"), criteriaBuilder.like( join.get(TablleB.feldXY), "%gesuchterInhalt%")); List<TabelleA> aList = ippDaoProvider.getHealthCheckExecutionDao().find(query);
Eclipse RCP JUnit tests with SWT checks
The basing question:
How to do JUnit tests for RCP classes that create SWT GUI?
Vorgehen/Hinweise:
- The „Run As“ dialog of Eclipse offers a „Run as Plugin“ option which must be used if OSGI features are used in the test.
- If OSGI features are needed (e.g. an OSGI service is part of the game) than OSGI a BundleContext has to be set up. Read OSGI Component Testing (Integration testing / “black-box-testing”) and perhaps OSGI BundleContext.java.
If this is done, then a Bundle can be invoked/setup by FrameworkUtil.getBundle(AnyClassInTheTestPlugin.java)
To read:
OSGI BundleContext.java –> siehe Mindmap unten!
Testing OSGI Based Applications –> PDF Version
Bundle Context
Setting up Eclipse like context for dependency injection:
If the class A has an annotation like
@Inject C c;
Then a class A can be retrieved that has an object of C already injected like that:
IEclipseContext context = EclipseContextFactory.create("test context"); context.set(C.class, new C(...)); A a = ContextInjectionFactory.make(A.class, context);
Problem while running on Linux Jenkins
org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
xxx
MS Access – Not in Query
In Oracle würde man schreiben:
select feldA from Table1 where feldA not in (select feldB from Table2);
Pendent in MS Access:
SELECT feldA FROM Table1 LEFT JOIN Table2 ON Table1.[feldA]=Table2.[feldB];
Eclipse RCP – Minimize/Maximized/Restored status abfragen
Expansionsstatus kann wie folgt abgefragt werden.
MUIElement partStack = modelService.find("my.part.stack", application); partStack.getTags().add(IPresentationEngine.MINIMIZED); partStack.setVisible(false);
Abgesrieben aus -> link