Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

lite av varje

  • Loading branch information...
commit a95ef82ffececa0fc2f401edc204b5be61597b71 1 parent 08e487e
authored
8  maven/domain/src/main/java/se/datahamstern/domain/hydda/Arsredovisning.java
@@ -37,7 +37,7 @@ public void accept(DomainEntityObjectVisitor visitor)  throws Exception{
37 37
   private Integer _index_år;
38 38
 
39 39
   /** när årsrapporten registrerades hos bolagsverket */
40  
-  private SourcedValue<Date> registrerinsdatum = new SourcedValue<Date>();
  40
+  private SourcedValue<Date> registreringsdatum = new SourcedValue<Date>();
41 41
 
42 42
 
43 43
   /** från och med vilken datum värdena i årsrapporten behandlar */
@@ -67,7 +67,7 @@ public boolean equals(Object o) {
67 67
     if (datumTo != null ? !datumTo.equals(that.datumTo) : that.datumTo != null) return false;
68 68
     if (identity != null ? !identity.equals(that.identity) : that.identity != null) return false;
69 69
     if (organisationIdentity != null ? !organisationIdentity.equals(that.organisationIdentity) : that.organisationIdentity != null) return false;
70  
-    if (registrerinsdatum != null ? !registrerinsdatum.equals(that.registrerinsdatum) : that.registrerinsdatum != null) return false;
  70
+    if (registreringsdatum != null ? !registreringsdatum.equals(that.registreringsdatum) : that.registreringsdatum != null) return false;
71 71
 
72 72
     return true;
73 73
   }
@@ -76,7 +76,7 @@ public boolean equals(Object o) {
76 76
   public int hashCode() {
77 77
     int result = super.hashCode();
78 78
     result = 31 * result + (organisationIdentity != null ? organisationIdentity.hashCode() : 0);
79  
-    result = 31 * result + (registrerinsdatum != null ? registrerinsdatum.hashCode() : 0);
  79
+    result = 31 * result + (registreringsdatum != null ? registreringsdatum.hashCode() : 0);
80 80
     result = 31 * result + (datumFrom != null ? datumFrom.hashCode() : 0);
81 81
     result = 31 * result + (datumTo != null ? datumTo.hashCode() : 0);
82 82
     result = 31 * result + (identity != null ? identity.hashCode() : 0);
@@ -88,7 +88,7 @@ public String toString() {
88 88
     return "Arsredovisning{" +
89 89
         "datumFrom=" + datumFrom +
90 90
         ", datumTo=" + datumTo +
91  
-        ", registrerinsdatum=" + registrerinsdatum +
  91
+        ", registreringsdatum=" + registreringsdatum +
92 92
         ", organisationIdentity=" + organisationIdentity +
93 93
         ", identity='" + identity + '\'' +
94 94
         ", _index_år=" + _index_år +
6  maven/domain/src/main/java/se/datahamstern/domain/package-info.java
... ...
@@ -1,5 +1,5 @@
1 1
 /**
2  
- * Domänklasser ligger i subpaket namngedda sinna källor.
  2
+ * Domänklasser ligger i subpaket namngedda sina källor.
3 3
  *
4 4
  * Så är det för att jag har en kuslig känsla för att spå i framtiden
5 5
  * då man med all säkerhet kommer stöta på trupp vid försök att konsolidera data mellan olika källor
@@ -10,8 +10,8 @@
10 10
  * Jag har bara valt att dela upp det i paket på där här viset så jag inte glömmer bort
11 11
  * anledningen till det.
12 12
  *
13  
- * Därför är det nu lite kladdigt med exempelvis
14  
- * att det finns hårda associationer mellan klasser som beskriver data från posten
  13
+ * Därför är det nu lite kladdigt att exempelvis
  14
+ * det finns hårda associationer mellan klasser som beskriver data från posten
15 15
  * och klasser som beskriver data från wikipedia.
16 16
  *
17 17
  */
3  maven/server/src/main/java/se/datahamstern/event/EventExecutor.java
@@ -191,7 +191,8 @@ private void assertWellDescribedEvent(Event event) {
191 191
     }
192 192
   }
193 193
 
194  
-  public void execute(Event event, JSONParser jsonParser) throws Exception {
  194
+  // todo only synchronize use of currentOutboxEventLog
  195
+  public synchronized void execute(Event event, JSONParser jsonParser) throws Exception {
195 196
 
196 197
     assertWellDescribedEvent(event);
197 198
 
10  maven/server/src/main/java/se/datahamstern/external/naringslivsregistret/HarvestNaringslivsregistret.java
@@ -17,7 +17,9 @@
17 17
 
18 18
 //  private static final Logger log = LoggerFactory.getLogger(HarvestNaringslivsregistret.class);
19 19
   // todo 76960-76963++
20  
-  // todo 9166-9167
  20
+  // done 9166-9167
  21
+  // todo 9162-9164
  22
+  // todo 9167-9170
21 23
 
22 24
   public static void main(String[] args) throws Exception {
23 25
     Datahamstern.getInstance().open();
@@ -36,8 +38,10 @@ public static void main(String[] args) throws Exception {
36 38
 //        "7696015465",
37 39
 //          "7696367502",
38 40
 //          "7696399999",
39  
-          "9166306721",
40  
-          "9167000000",
  41
+//          "9166306721",
  42
+//          "9164000000",
  43
+          "9164293921",
  44
+          "9166000000",
41 45
           new CreateEventsVisitor());
42 46
     } finally {
43 47
       Datahamstern.getInstance().close();
2  maven/server/src/main/java/se/datahamstern/external/naringslivsregistret/Naringslivsregistret.java
@@ -45,7 +45,7 @@ public void close() {
45 45
     List<NaringslivsregistretResult> results = new ArrayList<NaringslivsregistretResult>();
46 46
 
47 47
     selenium.getEval("window.document.getElementById('sokstrang').value='" +
48  
-        JSONObject.escape(query) + "';");
  48
+        StringEscapeUtils.escapeJavaScript(query) + "';");
49 49
     selenium.select("//SELECT[@id='sokalternativ']", "Företag");
50 50
     selenium.clickAndWaitForPageToLoad("//FORM[@name='sokForm']//INPUT[@type='submit']");
51 51
 
62  ...ver/src/main/java/se/datahamstern/external/posten/postnummer/PostenIckeExisterandePostnummerCommand.java
... ...
@@ -1,11 +1,18 @@
1 1
 package se.datahamstern.external.posten.postnummer;
2 2
 
  3
+import com.sleepycat.persist.EntityCursor;
3 4
 import org.json.simple.JSONObject;
4 5
 import org.json.simple.parser.JSONParser;
5 6
 import se.datahamstern.command.Command;
6 7
 import se.datahamstern.domain.DomainStore;
  8
+import se.datahamstern.domain.postnummer.Gata;
  9
+import se.datahamstern.domain.postnummer.Gatuadress;
7 10
 import se.datahamstern.domain.postnummer.Postnummer;
  11
+import se.datahamstern.domain.postnummer.Postort;
8 12
 import se.datahamstern.event.Event;
  13
+import se.datahamstern.sourced.SourcedValue;
  14
+
  15
+import java.util.Iterator;
9 16
 
10 17
 /**
11 18
  * @author kalle
@@ -17,17 +24,19 @@
17 24
 
18 25
   /**
19 26
    * A name that combined with the version uniquely describes this command.
20  
-   * @see #COMMAND_VERSION
21 27
    *
22  
-   * If this value change (ie only by editing the code and recompile),
23  
-   * then version should also be set to 1.
  28
+   * @see #COMMAND_VERSION
  29
+   *      <p/>
  30
+   *      If this value change (ie only by editing the code and recompile),
  31
+   *      then version should also be set to 1.
24 32
    */
25 33
   public static String COMMAND_NAME = "uppdatera med avsaknad postnummerpost från postens postnummerdatabas";
26 34
 
27 35
   /**
28 36
    * A version that combined with the name uniquely describes this command.
29  
-   * @see #COMMAND_NAME
30  
-   *
  37
+   * <p/>
  38
+   * <p/>
  39
+   * <p/>
31 40
    * If updating this class so it accepts other incoming data
32 41
    * then stop now!
33 42
    * <p/>
@@ -36,13 +45,15 @@
36 45
    * If only changing the logic in this class
37 46
    * make sure that all code that use this constant are synchronized
38 47
    * or create a clone and increase this value.
39  
-   *
  48
+   * <p/>
40 49
    * If you are not sure about what to change it to, then here are some ideas:
41 50
    * from 1 to 1-myUniqueNameHack,
42 51
    * from 1.0.1 to 1.0.1-myUniqueNameHack
43  
-   *
  52
+   * <p/>
44 53
    * If you are the official author of the original command
45 54
    * you should probably change it from 1 to 1.0.1.
  55
+   *
  56
+   * @see #COMMAND_NAME
46 57
    */
47 58
   public static String COMMAND_VERSION = "1";
48 59
 
@@ -69,8 +80,41 @@ public void execute(Event event, JSONParser jsonParser) throws Exception {
69 80
       updateSourced(postnummer, event);
70 81
       updateSourcedValue(postnummer.getPostnummer(), postnummerValue, event);
71 82
     } else {
72  
-      // todo find all use of this postnummer and set association to null!
73  
-      // todo currently this means all instances of Postort and Gata
  83
+
  84
+      // todo implement test cases!
  85
+
  86
+      // find all use of this postnummer and set association to null!
  87
+      // currently this means all instances of Gata and Gatuadress
  88
+
  89
+      Gata gata;
  90
+      EntityCursor<Gata> gator = DomainStore.getInstance().getGatorByPostnummer().entities(postnummer.getIdentity(), true, postnummer.getIdentity(), true);
  91
+      try {
  92
+        while ((gata = gator.next()) != null) {
  93
+          Iterator<SourcedValue<String>> postnummerIdentityIterator = gata.getPostnummerIdentities().iterator();
  94
+          while (postnummerIdentityIterator.hasNext()) {
  95
+            SourcedValue<String> postnummerIdentity = postnummerIdentityIterator.next();
  96
+            if (postnummer.getIdentity().equals(postnummerIdentity.get())) {
  97
+              postnummerIdentityIterator.remove();
  98
+              break;
  99
+            }
  100
+          }
  101
+          DomainStore.getInstance().put(gata);
  102
+        }
  103
+      } finally {
  104
+        gator.close();
  105
+      }
  106
+
  107
+      Gatuadress gatuadress;
  108
+      EntityCursor<Gatuadress> gatuadresser = DomainStore.getInstance().getGatuadresserByPostnummer().entities(postnummer.getIdentity(), true, postnummer.getIdentity(), true);
  109
+      try {
  110
+        while ((gatuadress = gatuadresser.next()) != null) {
  111
+          updateSourcedValue(gatuadress.getGataIdentity(), null, event);
  112
+          DomainStore.getInstance().put(gata);
  113
+        }
  114
+      } finally {
  115
+        gator.close();
  116
+      }
  117
+
74 118
     }
75 119
 
76 120
     updateSourcedValue(postnummer.getPostortIdentity(), null, event);
3  maven/server/src/main/java/se/datahamstern/external/posten/postnummer/PostenPostnummerCommand.java
@@ -121,11 +121,8 @@ public void execute(Event event, JSONParser jsonParser) throws Exception {
121 121
           gata.getNamn().set(gatunamn);
122 122
           gata.getPostortIdentity().set(postort.getIdentity());
123 123
           DomainStore.getInstance().put(gata);
124  
-        } else {
125  
-          System.currentTimeMillis();
126 124
         }
127 125
 
128  
-
129 126
         if (!gata.get_index_postnummerIdentities().contains(postnummer.getIdentity())) {
130 127
           gata.getPostnummerIdentities().add(new SourcedValue<String>(postnummer.getIdentity()));
131 128
           DomainStore.getInstance().put(gata);
8  maven/server/src/main/java/se/datahamstern/external/scb/MyndighetsregistretCommand.java
... ...
@@ -0,0 +1,8 @@
  1
+package se.datahamstern.external.scb;
  2
+
  3
+/**
  4
+ * @author kalle
  5
+ * @since 2012-04-17 15:01
  6
+ */
  7
+public class MyndighetsregistretCommand {
  8
+}
122  maven/server/src/main/java/se/datahamstern/external/scb/MyndighetsregistretHarvester.java
... ...
@@ -0,0 +1,122 @@
  1
+package se.datahamstern.external.scb;
  2
+
  3
+import org.w3c.dom.Node;
  4
+import org.w3c.dom.NodeList;
  5
+import se.datahamstern.Nop;
  6
+import se.datahamstern.io.SeleniumAccessor;
  7
+import se.datahamstern.io.SourceChangedException;
  8
+
  9
+import javax.xml.xpath.XPathConstants;
  10
+import java.util.HashSet;
  11
+import java.util.Set;
  12
+
  13
+/**
  14
+ * @author kalle
  15
+ * @since 2012-04-17 13:10
  16
+ */
  17
+public class MyndighetsregistretHarvester {
  18
+
  19
+  public static void main(String[] args) throws Exception {
  20
+    new MyndighetsregistretHarvester().harvest();
  21
+  }
  22
+
  23
+  public void harvest() throws Exception {
  24
+
  25
+    SeleniumAccessor selenium = new SeleniumAccessor();
  26
+    selenium.start();
  27
+    try {
  28
+
  29
+      Set<String> linksSeen = new HashSet<String>();
  30
+
  31
+      selenium.openAndWaitForPageToLoad("http://www.myndighetsregistret.scb.se/Myndighet.aspx");
  32
+
  33
+      String[] options = selenium.getSelectOptions("DropDown1$ddVal");
  34
+      if (!"--- Välj myndighetsgrupp här ---".equals(options[0])) {
  35
+        throw new SourceChangedException("Expected a header in top select option!");
  36
+      }
  37
+      for (int optionIndex = 1; optionIndex < options.length; optionIndex++) {
  38
+        String option = options[optionIndex];
  39
+        selenium.selectAndWaitForPageToLoad("DropDown1$ddVal", option);
  40
+        NodeList items = (NodeList) selenium.xpath.compile("id('grd')/TBODY/TR/TD/A/@href").evaluate(selenium.getDOM(), XPathConstants.NODESET);
  41
+        if (items.getLength() == 0) {
  42
+          throw new SourceChangedException("Expected at least one item in the table");
  43
+        }
  44
+        for (int itemIndex = 0; itemIndex < items.getLength(); itemIndex++) {
  45
+          linksSeen.add(items.item(itemIndex).getTextContent());
  46
+        }
  47
+      }
  48
+
  49
+      for (String link : linksSeen) {
  50
+
  51
+        System.out.println(link);
  52
+
  53
+        selenium.openAndWaitForPageToLoad(link);
  54
+
  55
+        String namn = selenium.xpath.compile("id('txtNamn')/@value").evaluate(selenium.getDOM()).trim();
  56
+        if (namn.isEmpty()) {
  57
+          throw new SourceChangedException("Myndighetsnamn must not be empty!");
  58
+        }
  59
+
  60
+        String orgno = selenium.xpath.compile("id('txtPeOrgNr')/@value").evaluate(selenium.getDOM()).trim();
  61
+        if (orgno.isEmpty()) {
  62
+          throw new SourceChangedException("Organisationsnummer must not be empty!");
  63
+        }
  64
+
  65
+        String postadress = selenium.xpath.compile("id('txtPostAdr')/@value").evaluate(selenium.getDOM()).trim();
  66
+        if (postadress.isEmpty()) {
  67
+          postadress = null;
  68
+        }
  69
+
  70
+        String postadressPostnummer = selenium.xpath.compile("id('txtPostNr')/@value").evaluate(selenium.getDOM()).trim();
  71
+        if (postadressPostnummer.isEmpty()) {
  72
+          throw new SourceChangedException("Postadress postnummer must not be empty!");
  73
+        }
  74
+
  75
+        String postadressPostort = selenium.xpath.compile("id('txtPostOrt')/@value").evaluate(selenium.getDOM()).trim();
  76
+        if (postadressPostort.isEmpty()) {
  77
+          throw new SourceChangedException("Postadress postort must not be empty!");
  78
+        }
  79
+
  80
+        String besöksadress = selenium.xpath.compile("id('txtBAdr')/@value").evaluate(selenium.getDOM()).trim();
  81
+        if (besöksadress.isEmpty()) {
  82
+          besöksadress = null;
  83
+        }
  84
+        String besöksPostnummer = selenium.xpath.compile("id('txtBPostNr')/@value").evaluate(selenium.getDOM()).trim();
  85
+        if (besöksPostnummer.isEmpty()) {
  86
+          besöksPostnummer = null;
  87
+        }
  88
+        String besöksPostort = selenium.xpath.compile("id('txtBPostOrt')/@value").evaluate(selenium.getDOM()).trim();
  89
+        if (besöksPostort.isEmpty()) {
  90
+          besöksPostort = null;
  91
+        }
  92
+
  93
+        String epost = selenium.xpath.compile("id('lnkEpost')/@href").evaluate(selenium.getDOM()).replaceFirst("(mailto:)(.+)", "$2").trim();
  94
+        if (epost.isEmpty()) {
  95
+          epost = null;
  96
+        }
  97
+        String hemsida = selenium.xpath.compile("id('lnkWebbAdr')/@href").evaluate(selenium.getDOM()).trim();
  98
+        if (hemsida.isEmpty()) {
  99
+          hemsida = null;
  100
+        }
  101
+        String telefon = selenium.xpath.compile("id('txtTel')/@value").evaluate(selenium.getDOM()).trim();
  102
+        if (telefon.isEmpty()) {
  103
+          telefon = null;
  104
+        }
  105
+        String fax = selenium.xpath.compile("id('txtFax')/@value").evaluate(selenium.getDOM()).trim();
  106
+        if (fax.isEmpty()) {
  107
+          fax = null;
  108
+        }
  109
+
  110
+
  111
+        Nop.breakpoint();
  112
+
  113
+      }
  114
+
  115
+    } finally {
  116
+      selenium.stop();
  117
+    }
  118
+
  119
+  }
  120
+
  121
+
  122
+}

0 notes on commit a95ef82

Please sign in to comment.
Something went wrong with that request. Please try again.