package Ġio . github . paul griff ith . backup Ċ Ċ import Ġcom . form dev . flat l af . extras . components . Flat Tabbed Pane Ċ import Ġio . github . paul griff ith . idb . generic . Generic View Ċ import Ġio . github . paul griff ith . utils . SQLite Connection Ċ import Ġio . github . paul griff ith . utils . Tool Ċ import Ġio . github . paul griff ith . utils . Tool Panel Ċ import Ġio . github . paul griff ith . utils . getLogger Ċ import Ġnet . ling ala . zip 4 j . Zip File Ċ import Ġnet . ling ala . zip 4 j . exception . Zip Exception Ċ import Ġnet . mig info com . swing . M ig Layout Ċ import Ġjava . awt . Border Layout Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Path Ċ import Ġjavax . swing . Icon Ċ import Ġjavax . swing . JLabel Ċ import Ġjavax . swing . JPanel Ċ import Ġjavax . swing . JS plit Pane Ċ import Ġjavax . xml . XML Constants Ċ import Ġjavax . xml . parsers . Document BuilderFactory Ċ import Ġkotlin . io . path . div Ċ import Ġkotlin . io . path . name Ċ Ċ class ĠBackup View ( val Ġpath : ĠPath ) Ġ: ĠTool Panel () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġg wb k Ġ= ĠZip File ( path . to File ()). also Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( it . isValid Zip File ) Ġ{ Ġ" Not Ġa Ġvalid Ġzip Ġfile " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġprojects Ġ= ĠProjects Panel ( g wb k ) ĊĊĠĠĠ Ġprivate Ġval Ġbackup Info Ġ= ĠJLabel (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheader Ġ= Ġg wb k . getFile Header ( BACKUP _ INFO ) ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠXML _ FACTORY . new Document Builder (). parse ( g wb k . getInputStream ( header ). buffered ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnormalize Document () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġversion Ġ= Ġfile . getElementsByTagName (" version "). item ( 0 ). textContent ĊĠĠĠĠĠĠĠ Ġval Ġtimestamp Ġ= Ġfile . getElementsByTagName (" timestamp "). item ( 0 ). textContent ĊĠĠĠĠĠĠĠ Ġval Ġedition Ġ= Ġfile . getElementsByTagName (" edition "). item ( 0 )?. textContent ĊĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( version ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" Ġ- Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( timestamp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! edition . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" Ġ- Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( edition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtabs Ġ= ĠFlat Tabbed Pane (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Tab ( GATE WAY _ XML , ĠText Document ( g wb k , ĠG ATE WAY _ XML )) ĊĠĠĠĠĠĠĠ Ġadd Tab ( RED UND AN CY _ XML , ĠText Document ( g wb k , ĠRED UND AN CY _ XML )) ĊĠĠĠĠĠĠĠ Ġadd Tab ( IGN ITION _ CONF , ĠText Document ( g wb k , ĠI GN ITION _ CONF )) ĊĠĠĠĠĠĠĠ Ġadd Tab ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDB _ BACKUP _ SQL ITE _ ID B , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJPanel ( Border Layout ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Hierarchy Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . is Showing Ġ&& Ġcomponent Count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb TempFile Ġ= ĠFiles . create Temp Directory (" kind ling ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg wb k . extract File ( g wb k . getFile Header ( DB _ BACKUP _ SQL ITE _ ID B ), Ġdb TempFile . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= ĠSQLite Connection ( db TempFile Ġ/ ĠDB _ BACKUP _ SQL ITE _ ID B ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid b View Ġ= ĠGeneric View ( connection ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( idb View , ĠBorderLayout . CENTER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠZip Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . error (" Error Ġextracting Ġ$ DB _ BACKUP _ SQL ITE _ ID B Ġfrom Ġ$ path ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( JLabel (" Unable Ġto Ġopen Ġ$ DB _ BACKUP _ SQL ITE _ ID B ; Ġ${ e . message } "), ĠBorderLayout . CENTER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsidebar Ġ= ĠJPanel ( M ig Layout (" ins Ġ 0 ")). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġadd ( JLabel (" Projects :" ), Ġ" wrap , Ġgap top Ġ 1 2 ") ĊĠĠĠĠĠĠĠ Ġadd ( projects , Ġ" width Ġ 2 0 0 , Ġgrow y , Ġpush y ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġpath . name ĊĠĠĠĠĠĠĠ Ġtool Tip Text Ġ= Ġpath . toString () ĊĊĠĠĠĠĠĠĠ Ġadd ( backup Info , Ġ" north ") ĊĠĠĠĠĠĠĠ Ġadd ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJ Split Pane ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJ Split Pane . HORIZONTAL _ SPLIT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsidebar , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtabs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" push , Ġgrow " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove Notify () Ġ= Ġsuper . remove Notify (). also Ġ{ ĊĠĠĠĠĠĠĠ Ġg wb k . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġicon : ĠIcon Ġ= ĠTool . Backup Viewer . icon ĊĊĠĠĠ Ġcompanion Ġobject ĠConstants Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠBACK UP _ INFO Ġ= Ġ" backup info . xml " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠG ATE WAY _ XML Ġ= Ġ" gateway . xml " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠRED UND AN CY _ XML Ġ= Ġ" red undancy . xml " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠI GN ITION _ CONF Ġ= Ġ" ign ition . conf " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDB _ BACKUP _ SQL ITE _ ID B Ġ= Ġ" db _ backup _ sqlite . idb " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠXML _ FACTORY Ġ= ĠDocument BuilderFactory . new Default Instance (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Feature ( XML Constants . FEATURE _ SECURE _ PROCESS ING , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOGGER Ġ= Ġget Logger < Backup View >() ĊĠĠĠ Ġ} Ċ } Ċ