Wéi ophalen déi selwecht Saach ze maachen

Wëllt Dir Routine Operatiounen ëmmer erëm widderhuelen? Also ech net. Awer all Kéier am SQL Client wann ech mat der Rostelecom Späichere schaffen, hunn ech all d'Joints tëscht den Dëscher manuell registréiert. An dat trotz der Tatsaach, datt an 90% vun de Fäll d'Felder an d'Konditioune fir Dëscher matzemaachen aus Ufro un Ufro zesummegefall! Et géif schéngen datt all SQL Client automatesch Fäerdegstellungsfunktiounen huet, awer fir Späichere funktionnéiert et net ëmmer: si enthalen selten eenzegaartegen Zwang an auslännesche Schlëssel fir d'Performance ze verbesseren, an ouni dëst wäert de Programm net wëssen wéi Entitéite mat all Zesummenhang sinn. aner a wat et kann fir Iech bidden.

Wéi ophalen déi selwecht Saach ze maachen

Nodeems ech duerch Verweigerung, Roserei, Verhandlunge, Depressioun an Akzeptanz kommen, hunn ech décidéiert - firwat net probéieren Autofill mat Blackjack selwer ëmzesetzen an et de richtege Wee ze maachen? Ech benotzen den dbeaver Client, geschriwwen an Java, et huet eng Open Source Gemeinschaftsversioun. En einfache Plang ass reift:

  1. Fannt Klassen am Quellcode, déi fir d'Autokomplementéierung verantwortlech sinn
  2. Redirect se fir mat externen Metadaten ze schaffen an Informatioun iwwer Joint vun do aus ze zéien
  3. ??????
  4. PROFIT

Ech hunn den éischte Punkt zimlech séier erausfonnt - ech hunn eng Ufro am Bug Tracker fonnt fir den Autofill unzepassen an am Zesummenhang engagéieren entdeckt d'SQLCompletionAnalyzer Klass. Ech hunn de Code gekuckt an et ass wat ech brauch. Et bleift just fir et ëmzeschreiwen sou datt alles funktionnéiert. Ech hunn op e fräien Owend gewaart an hunn ugefaang iwwer d'Ëmsetzung ze denken. Ech hu beschloss, Tabelllinkregelen (Metadaten) an json ze schreiwen. Ech hat keng praktesch Erfarung mat dësem Format ze schaffen an déi aktuell Aufgab gouf als eng Geleeënheet gesi fir dës Ofdreiwung ze korrigéieren.

Fir mat json ze schaffen, hunn ech decidéiert d'Bibliothéik ze benotzen json-einfach vu Google. Dëst ass wou d'Iwwerraschungen ugefaang hunn. Wéi et sech erausstellt, gouf dbeaver, als richteg Applikatioun, op der Eclipse Plattform geschriwwe mam OSGi Kader. Fir erfuerene Entwéckler mécht dës Saach et bequem fir Ofhängegkeeten ze managen, awer fir mech war et méi wéi donkel Magie, fir déi ech kloer net prett war: wéi gewinnt importéieren ech d'Klassen déi ech brauch aus der json-simple Bibliothéik am Header vun der editéierter Klass, spezifizéiert se an der pom.xml, no deem de Projet kategoresch refuséiert normal ze montéieren a mat Feeler ofbriechen.

Um Enn hunn ech et fäerdeg bruecht d'Baufehler ze fixéieren: Ech hunn d'Bibliothéik net an pom.xml registréiert, awer am manifest.mf Manifest, wéi vun OSGI gefuerdert, wärend et als Import-Package uginn. Net déi schéinste Léisung, awer et funktionnéiert. Dunn ass déi nächst Iwwerraschung opgetaucht. Wann Dir an Intellij Idea entwéckelt, kënnt Dir net einfach goen a fänken un Äre Projet op Basis vun der Sonnendäischtertplattform ze Debuggen: en onerfueren Entwéckler soll net manner wéi en Analyst leiden ouni Ufroen fäerdeg ze maachen. D'Beaver-Entwéckler selwer koumen zur Rettung, an hunn an der Wiki all d'Dänz mat enger Tambourin uginn, déi musse gemaach ginn. Déi lästegst Saach ass datt och no all dëse Squats de Projet net an Debug mat der json Bibliothéik lancéiert wollt ginn, déi iwwer Import-Package verbonne sinn (trotz der Tatsaach datt et nach ëmmer erfollegräich an de fäerdege Produkt zesummegesat gouf).

Zu där Zäit hat ech schonn d'Onbequemlechkeet gemierkt fir json fir meng Aufgab ze benotzen - schliisslech sollten d'Metadaten manuell geännert ginn, an d'Xml-Format ass besser fir dëst gëeegent. Dat zweet Argument fir xml war d'Präsenz vun all néideg Klassen am JDK, wat et méiglech gemaach huet mat enger externer Bibliothéik ze kämpfen. Mat grousser Freed hunn ech all Metadaten vun json op xml transferéiert an ugefaang d'Autokomplett Logik z'änneren.

Metadaten Beispill

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<tableRelations>
    <tableRelation>
        <leftTable>dim_account</leftTable>
        <rightTable>dim_partner</rightTable>
        <joinColumnPair leftColumn="partner_key" rightColumn="partner_key"/>
        <joinColumnPair leftColumn="src_id" rightColumn="src_id"/>
    </tableRelation>
    <tableRelation>
        <leftTable>dim_account</leftTable>
        <rightTable>dim_branch</rightTable>
        <joinColumnPair leftColumn="src_id" rightColumn="src_id"/>
        <joinColumnPair leftColumn="branch_key" rightColumn="branch_key"/>
    </tableRelation>
</tableRelations>

Als Resultat hunn ech Ännerungen gemaach an de SQLUtils an SQLCompletionAnalyzer Klassen. D'Iddi ass dëst: wann de Programm net fäeg ass gëeegent Autocomplete Suggestiounen mat der Basislogik ze fannen, da kontrolléiert et op d'Präsenz vu méigleche Joints mat enger externer XML Datei. D'Datei selwer späichert Pairen vun Dëscher, déi d'Felder uginn, mat deenen dës Tabelle verbonne musse ginn. Restriktiounen op d'technesch Validitéitsdatum vun de Rekorder eff_dttm an exp_dttm an de logesche Läschflag deleted_ind ginn als Standard festgeluecht.

Wann Ännerungen am Code gemaach goufen, ass d'Fro opgestan - wien fëllt d'Datei mat Metadaten? Et gi vill Entitéiten am Repository, et ass deier fir all Verbindungen selwer ze registréieren. Als Resultat hunn ech décidéiert dës Aufgab fir meng Matbierger Analysten ze ginn. Ech hunn d'Metadatendatei an svn gepost, vu wou e Kasse an de lokalen Verzeichnis mam Programm gemaach gëtt. De Prinzip ass dëst: ass eng nei Entitéit am Repository opgetaucht? Een Analyst trëtt méiglech Umeldungen an d'Datei, engagéiert Ännerunge, de Rescht kontrolléiert sech selwer a genéisst déi funktionnéierend Auto-Fäerdegstellung: Gemeinschaft, Akkumulation vu Wëssen an all dat. Huet e Workshop iwwer d'Benotzung vum Programm fir Kollegen, geschriwwen en Artikel am Confluence - elo huet d'Firma e méi praktescht Tool.

D'Aarbecht un dëser Fonktioun huet mir d'Versteesdemech ginn, datt et net néideg ze fäerten mat Open Source Projeten ze bastelen - als Regel, si hunn eng kloer Architektur, an och Basis Wëssen vun der Sprooch wäert genuch fir Experimenter ginn. A mat enger gewësser Quantitéit vu Persistenz kënnt Dir souguer vun haassen Routine-Operatiounen lass ginn, spuert Iech Zäit fir nei Experimenter.

Source: will.com

Setzt e Commentaire