소스 검색

приступаем к персистентности

kpmy 5 년 전
부모
커밋
dab083f795
29개의 변경된 파일472개의 추가작업 그리고 28개의 파일을 삭제
  1. 1 0
      .gitignore
  2. 48 1
      pom.xml
  3. 0 4
      src/main/java/in/ocsf/bee/freigeld/core/model/EmitterEvent.java
  4. 7 0
      src/main/java/inn/ocsf/bee/freigeld/core/cl/DryRunnable.java
  5. 40 0
      src/main/java/inn/ocsf/bee/freigeld/core/cl/KernelTri.java
  6. 21 0
      src/main/java/inn/ocsf/bee/freigeld/core/cl/Pt.java
  7. 63 0
      src/main/java/inn/ocsf/bee/freigeld/core/cl/Sample0.java
  8. 225 0
      src/main/java/inn/ocsf/bee/freigeld/core/cl/Sample1.java
  9. 4 0
      src/main/java/inn/ocsf/bee/freigeld/core/cl/Sample3.java
  10. 1 1
      src/main/java/inn/ocsf/bee/freigeld/core/model/Bank.java
  11. 1 1
      src/main/java/inn/ocsf/bee/freigeld/core/model/BankAccount.java
  12. 1 1
      src/main/java/inn/ocsf/bee/freigeld/core/model/BankEvent.java
  13. 1 1
      src/main/java/inn/ocsf/bee/freigeld/core/model/Coin.java
  14. 1 1
      src/main/java/inn/ocsf/bee/freigeld/core/model/CoinValue.java
  15. 1 1
      src/main/java/inn/ocsf/bee/freigeld/core/model/Emitter.java
  16. 4 0
      src/main/java/inn/ocsf/bee/freigeld/core/model/EmitterEvent.java
  17. 1 1
      src/main/java/inn/ocsf/bee/freigeld/core/model/EmitterStartRecalculationEvent.java
  18. 1 1
      src/main/java/inn/ocsf/bee/freigeld/core/model/EmitterStopRecalculationEvent.java
  19. 1 1
      src/main/java/inn/ocsf/bee/freigeld/core/model/NaturalPerson.java
  20. 1 1
      src/main/java/inn/ocsf/bee/freigeld/core/model/Person.java
  21. 1 1
      src/main/java/inn/ocsf/bee/freigeld/core/model/PrivatePerson.java
  22. 20 0
      src/main/java/inn/ocsf/bee/freigeld/core/model/data/CoinData.java
  23. 9 0
      src/main/java/inn/ocsf/bee/freigeld/core/repo/CoinRepository.java
  24. 1 1
      src/main/java/inn/ocsf/bee/freigeld/utils/ZBase32Utils.java
  25. 1 1
      src/main/kotlin/inn/ocsf/bee/freigeld/core/FreiApp.kt
  26. 6 7
      src/main/kotlin/inn/ocsf/bee/freigeld/core/demo/DemoInMem.kt
  27. 4 0
      src/main/kotlin/inn/ocsf/bee/freigeld/core/model/GlobalEmitter.kt
  28. 4 0
      src/main/resources/application-dev.yaml
  29. 3 3
      src/test/kotlin/inn/ocsf/bee/freigeld/core/demo/CoinUtilsTest.kt

+ 1 - 0
.gitignore

@@ -3,3 +3,4 @@
 /*.ipr
 /*.iws
 /.idea
+/.ideaDataSources

+ 48 - 1
pom.xml

@@ -13,7 +13,8 @@
         <java.version>1.8</java.version>
         <kotlin.version>1.3.72</kotlin.version>
         <target>1.8</target>
-        <start-class>in.ocsf.bee.freigeld.core.FreiApp</start-class>
+        <start-class>inn.ocsf.bee.freigeld.core.FreiApp</start-class>
+        <spring.version>2.2.6.RELEASE</spring.version>
     </properties>
 
     <parent>
@@ -32,11 +33,32 @@
                     <artifactId>spring-boot-starter-tomcat</artifactId>
                 </exclusion>
             </exclusions>
+            <version>${spring.version}</version>
         </dependency>
 
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-undertow</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+
+        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-mongodb -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-mongodb</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.querydsl</groupId>
+            <artifactId>querydsl-mongodb</artifactId>
+            <version>${querydsl.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.querydsl</groupId>
+            <artifactId>querydsl-apt</artifactId>
+            <version>${querydsl.version}</version>
         </dependency>
 
         <dependency>
@@ -102,11 +124,36 @@
             <artifactId>aerogear-otp-java</artifactId>
             <version>1.0.0</version>
         </dependency>
+
+        <dependency>
+            <groupId>com.aparapi</groupId>
+            <artifactId>aparapi</artifactId>
+            <version>1.8.0</version>
+        </dependency>
+
     </dependencies>
 
     <build>
         <finalName>frei</finalName>
         <plugins>
+            <plugin>
+                <groupId>com.mysema.maven</groupId>
+                <artifactId>apt-maven-plugin</artifactId>
+                <version>1.1.3</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>process</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>target/generated-sources/java</outputDirectory>
+                            <processor>
+                                org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor
+                            </processor>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>

+ 0 - 4
src/main/java/in/ocsf/bee/freigeld/core/model/EmitterEvent.java

@@ -1,4 +0,0 @@
-package in.ocsf.bee.freigeld.core.model;
-
-public interface EmitterEvent {
-}

+ 7 - 0
src/main/java/inn/ocsf/bee/freigeld/core/cl/DryRunnable.java

@@ -0,0 +1,7 @@
+package inn.ocsf.bee.freigeld.core.cl;
+
+import com.aparapi.Kernel;
+
+abstract class DryRunnable extends Kernel {
+    abstract void dryRun();
+}

+ 40 - 0
src/main/java/inn/ocsf/bee/freigeld/core/cl/KernelTri.java

@@ -0,0 +1,40 @@
+package inn.ocsf.bee.freigeld.core.cl;
+
+import com.aparapi.Kernel;
+
+import java.math.BigInteger;
+
+public class KernelTri {
+
+    //трайт
+    public static final int N = 3 * 3 * 3;
+    public static final int TN = N * N * N;
+    public static final int MAX_TRYTE = TN / 2;
+    public static final int MIN_TRYTE = -TN / 2;
+
+    //слово, три трайта
+    public static final int TRI_WORD_LEN = 3;
+    public static final long WN = (long) TN * TN * TN;
+    public static final long MAX_TRI_WORD = WN / 2;
+    public static final long MIN_TRI_WORD = -WN / 2;
+
+    //длинное слово, 9 трайтов
+    public static final int TRI_LONG_WORD_LEN = 9;
+    public static final BigInteger LN = new BigInteger("443426488243038000000000000000000000000");
+    public static final BigInteger MAX_TRI_LONG_WORD = LN.divide(BigInteger.valueOf(2));
+    public static final BigInteger MIN_TRI_LONG_WORD = LN.divide(BigInteger.valueOf(-2));
+
+    public Kernel getKernel() {
+        return new Kernel() {
+            @Override
+            public void run() {
+
+            }
+        };
+    }
+
+    public static class RawTriSet {
+
+
+    }
+}

+ 21 - 0
src/main/java/inn/ocsf/bee/freigeld/core/cl/Pt.java

@@ -0,0 +1,21 @@
+package inn.ocsf.bee.freigeld.core.cl;
+
+final class Pt {
+    private int x, y;
+
+    public int getX() {
+        return x;
+    }
+
+    public void setX(int x) {
+        this.x = x;
+    }
+
+    public int getY() {
+        return y;
+    }
+
+    public void setY(int y) {
+        this.y = y;
+    }
+}

+ 63 - 0
src/main/java/inn/ocsf/bee/freigeld/core/cl/Sample0.java

@@ -0,0 +1,63 @@
+package inn.ocsf.bee.freigeld.core.cl;
+
+import com.aparapi.Kernel;
+import com.aparapi.Range;
+import com.aparapi.device.Device;
+
+import java.util.logging.Logger;
+
+public class Sample0 implements Runnable {
+
+    private final Logger log = Logger.getLogger(getClass().getName());
+
+    @Override
+    public void run() {
+        final int R = 1024;
+        final int[] buffer_$constant$ = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};
+
+        final float[] resultF = new float[R];
+        final boolean[] resultB = new boolean[R];
+        final byte[] resultH = new byte[R];
+        final short[] resultS = new short[R];
+        final int[] resultI = new int[R];
+        final long[] resultL = new long[R];
+        final Pt[] resultO = new Pt[R];
+
+        for (int i = 0; i < R; i++)
+            resultO[i] = new Pt();
+
+        Kernel kernel = new Kernel() {
+
+            protected @PrivateMemorySpace(4)
+            final short[] myBuffer = new short[4];
+            @Constant
+            final int[] myBufferConstant = new int[]{0, 1, 2, 3};
+            @Local
+            final int[] buffer = new int[R];
+
+            @Override
+            public void run() {
+                int i = getGlobalId();
+                for (int j = 0; j < myBuffer.length; j++) {
+                    myBuffer[j] = (short) j;
+                }
+                buffer[i] = -i;
+                localBarrier();
+                resultB[i] = i % 2 == 0;
+                resultL[i] = buffer_$constant$[i % 4];
+                resultI[i] = myBufferConstant[i % 4];
+                resultS[i] = myBuffer[i % 4];
+                resultH[i] = (byte) buffer[i];
+                resultF[i] = resultI[i];
+                resultO[i].setX(i);
+                resultO[i].setY(i);
+            }
+        };
+        Device device = Device.best();
+        Range range = Range.create(device, R);
+        log.info("opencl run");
+        kernel.execute(range, 1024);
+        log.info("done opencl run");
+    }
+
+}

+ 225 - 0
src/main/java/inn/ocsf/bee/freigeld/core/cl/Sample1.java

@@ -0,0 +1,225 @@
+package inn.ocsf.bee.freigeld.core.cl;
+
+import com.aparapi.Kernel;
+import com.aparapi.Range;
+import com.aparapi.device.Device;
+import com.aparapi.device.OpenCLDevice;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.logging.Logger;
+
+public class Sample1 implements Runnable {
+
+    private final ObjectMapper objectMapper = new ObjectMapper();
+
+    private final Logger log = Logger.getLogger(getClass().getName());
+    private final Integer TOTAL_MEM;
+    private final OpenCLDevice device;
+
+    public Sample1() {
+        Device _device = Device.best();
+        if (_device instanceof OpenCLDevice)
+            this.device = (OpenCLDevice) _device;
+        else
+            throw new RuntimeException("no opencl device");
+
+        log.info(device.getShortDescription() + " " + device.getName());
+        TOTAL_MEM = Long.valueOf(Math.min(128, device.getMaxMemAllocSize() / 1024 / 1024 / 2)).intValue() * 1024 * 1024;
+    }
+
+    @Override
+    public void run() {
+        final int N = 4;
+        final int G = 32;
+
+        final int pB = 4 * 1024;
+        final int pBtotal = 0;
+        final int pBfrom = 1;
+        final int pBto = 2;
+        final int pBpos = 3;
+        final int pBlen = 4;
+
+        final byte[] mm = new byte[TOTAL_MEM];
+        final long[] arg = new long[3];
+        final long[][] mem = new long[N][G];
+        final long[][] res = new long[2][16];
+        final AtomicInteger[] at = new AtomicInteger[]{new AtomicInteger(0), new AtomicInteger(0), new AtomicInteger(0)};
+
+        Kernel kernel = new DryRunnable() {
+
+            @Constant
+            final
+            boolean[] dryRun = new boolean[]{false};
+
+            @PrivateMemorySpace(pB)
+            final
+            byte[] membuf = new byte[pB];
+            @PrivateMemorySpace(5)
+            final
+            int[] bufposlimits = new int[5];
+
+            private void mem2buf() {
+                int p0 = bufposlimits[pBpos];
+                int len = bufposlimits[pBlen];
+                int from = bufposlimits[pBfrom];
+                int p = p0;
+                while (p < p0 + len - 1) {
+                    membuf[p - p0] = mm[from + p];
+                    p++;
+                }
+            }
+
+            private void buf2mem() {
+                int p0 = bufposlimits[pBpos];
+                int len = bufposlimits[pBlen];
+                int from = bufposlimits[pBfrom];
+                int p = p0;
+                while (p < p0 + len - 1) {
+                    mm[from + p] = membuf[p - p0];
+                    p++;
+                }
+            }
+
+            private void initbuf() {
+                int x = dryRun[0] ? 1 : getGlobalId(0);
+                int xN = dryRun[0] ? G : getGlobalSize(0);
+                int block = mm.length / xN;
+                bufposlimits[pBtotal] = block;
+                int from = x * block;
+                int to = (x + 1) * block - 1;
+                bufposlimits[pBfrom] = from;
+                bufposlimits[pBto] = to;
+                bufpos(0);
+            }
+
+            private void bufpos(int pos) {
+                if (pos >= bufposlimits[pBpos] && pos < (bufposlimits[pBpos] + bufposlimits[pBlen]))
+                    return;
+
+                bufposlimits[pBpos] = max(0, min(bufposlimits[pBtotal] - pB, pos));
+                bufposlimits[pBlen] = min(bufposlimits[pBtotal] - bufposlimits[pBpos], pB);
+                mem2buf();
+            }
+
+            private void memset(int pos, byte val) {
+                bufpos(pos);
+                int pos0 = bufposlimits[pBpos];
+                membuf[pos - pos0] = val;
+            }
+
+            private byte memget(int pos) {
+                bufpos(pos);
+                int pos0 = bufposlimits[pBpos];
+                return membuf[pos - pos0];
+            }
+
+            private void test() {
+                int x = getGlobalId(0);
+                int y = getGlobalId(1);
+                int z = getGlobalId(2);
+                int xN = getGlobalSize(0);
+                int yN = getGlobalSize(1);
+                int zN = getGlobalSize(2);
+                int gx = getGroupId(0);
+                int gy = getGroupId(1);
+                int gz = getGroupId(2);
+                int gxN = getNumGroups(0);
+                int gyN = getNumGroups(1);
+                int gzN = getNumGroups(2);
+                int lx = getLocalId(0);
+                int ly = getLocalId(1);
+                int lz = getLocalId(2);
+                int lxN = getLocalSize(0);
+                int lyN = getLocalSize(1);
+                int lzN = getLocalSize(2);
+                int p = getPassId();
+
+                mem[0][x] = (x + 1) * 1000000 + (gx + 1) * 1000 + (lx + 1);
+                mem[1][y] = (y + 1) * 1000000 + (gy + 1) * 1000 + (ly + 1);
+                mem[2][z] = (z + 1) * 1000000 + (gz + 1) * 1000 + (lz + 1);
+
+                res[0][0] = p;
+                res[0][1] = xN;
+                res[0][2] = yN;
+                res[0][3] = zN;
+                res[0][4] = gxN;
+                res[0][5] = gyN;
+                res[0][6] = gzN;
+                res[0][7] = lxN;
+                res[0][8] = lyN;
+                res[0][9] = lzN;
+
+                atomicInc(at[0]);
+                atomicInc(at[1]);
+                atomicInc(at[2]);
+                int block = mm.length / xN;
+                int from = x * block;
+                int to = (x + 1) * block - 1;
+                mem[3][x] = to;
+                int i = from;
+                while (i <= to) {
+                    mm[i] = (byte) (x + 1);
+                    i++;
+                }
+            }
+
+
+            @Override
+            public void run() {
+                int x = getGlobalId(0);
+                initbuf();
+                memset(0, (byte) 1);
+                byte val = memget(0);
+                if (val == 1) memset(1, (byte) 1);
+                buf2mem();
+            }
+
+            public void dryRun() {
+                dryRun[0] = true;
+                run();
+                dryRun[0] = false;
+            }
+        };
+
+        Range range = Range.create(device, G);
+        /*switch (device.getMaxWorkItemDimensions()){
+            case 1:
+                range = Range.create(device, G);
+                break;
+            case 2:
+                range = Range.create2D(device, G, G);
+                break;
+            case 3:
+                range = Range.create3D(device, G, G, G);
+                break;
+            default:
+                throw new RuntimeException("not supported");
+        }*/
+        try {
+            ((DryRunnable) kernel).dryRun();
+            kernel.execute(range, 1);
+        } catch (Exception e) {
+            throw new RuntimeException("dry run failed", e);
+        }
+        Map<String, Object> info = new HashMap<>();
+        info.put("time", kernel.getAccumulatedExecutionTime() / 1000.0);
+        info.put("memg", TOTAL_MEM / 1024.0 / 1024.0);
+        info.put("meml", device.getLocalMemSize() / 1024.0);
+        try {
+            log.info(objectMapper.writer().withDefaultPrettyPrinter().writeValueAsString(info));
+            log.info(objectMapper.writeValueAsString(mem[0]));
+            log.info(objectMapper.writeValueAsString(mem[1]));
+            log.info(objectMapper.writeValueAsString(mem[2]));
+            log.info(objectMapper.writeValueAsString(res[0]));
+            log.info(objectMapper.writeValueAsString(res[1]));
+            log.info(objectMapper.writeValueAsString(at));
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        kernel.dispose();
+    }
+
+}

+ 4 - 0
src/main/java/inn/ocsf/bee/freigeld/core/cl/Sample3.java

@@ -0,0 +1,4 @@
+package inn.ocsf.bee.freigeld.core.cl;
+
+public class Sample3 {
+}

+ 1 - 1
src/main/java/in/ocsf/bee/freigeld/core/model/Bank.java → src/main/java/inn/ocsf/bee/freigeld/core/model/Bank.java

@@ -1,4 +1,4 @@
-package in.ocsf.bee.freigeld.core.model;
+package inn.ocsf.bee.freigeld.core.model;
 
 import java.util.Collection;
 import java.util.UUID;

+ 1 - 1
src/main/java/in/ocsf/bee/freigeld/core/model/BankAccount.java → src/main/java/inn/ocsf/bee/freigeld/core/model/BankAccount.java

@@ -1,4 +1,4 @@
-package in.ocsf.bee.freigeld.core.model;
+package inn.ocsf.bee.freigeld.core.model;
 
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;

+ 1 - 1
src/main/java/in/ocsf/bee/freigeld/core/model/BankEvent.java → src/main/java/inn/ocsf/bee/freigeld/core/model/BankEvent.java

@@ -1,4 +1,4 @@
-package in.ocsf.bee.freigeld.core.model;
+package inn.ocsf.bee.freigeld.core.model;
 
 import java.util.UUID;
 

+ 1 - 1
src/main/java/in/ocsf/bee/freigeld/core/model/Coin.java → src/main/java/inn/ocsf/bee/freigeld/core/model/Coin.java

@@ -1,4 +1,4 @@
-package in.ocsf.bee.freigeld.core.model;
+package inn.ocsf.bee.freigeld.core.model;
 
 import java.util.UUID;
 

+ 1 - 1
src/main/java/in/ocsf/bee/freigeld/core/model/CoinValue.java → src/main/java/inn/ocsf/bee/freigeld/core/model/CoinValue.java

@@ -1,4 +1,4 @@
-package in.ocsf.bee.freigeld.core.model;
+package inn.ocsf.bee.freigeld.core.model;
 
 public enum CoinValue {
     one(1, 364),

+ 1 - 1
src/main/java/in/ocsf/bee/freigeld/core/model/Emitter.java → src/main/java/inn/ocsf/bee/freigeld/core/model/Emitter.java

@@ -1,4 +1,4 @@
-package in.ocsf.bee.freigeld.core.model;
+package inn.ocsf.bee.freigeld.core.model;
 
 import org.jetbrains.annotations.NotNull;
 

+ 4 - 0
src/main/java/inn/ocsf/bee/freigeld/core/model/EmitterEvent.java

@@ -0,0 +1,4 @@
+package inn.ocsf.bee.freigeld.core.model;
+
+public interface EmitterEvent {
+}

+ 1 - 1
src/main/java/in/ocsf/bee/freigeld/core/model/EmitterStartRecalculationEvent.java → src/main/java/inn/ocsf/bee/freigeld/core/model/EmitterStartRecalculationEvent.java

@@ -1,4 +1,4 @@
-package in.ocsf.bee.freigeld.core.model;
+package inn.ocsf.bee.freigeld.core.model;
 
 public class EmitterStartRecalculationEvent implements EmitterEvent {
 }

+ 1 - 1
src/main/java/in/ocsf/bee/freigeld/core/model/EmitterStopRecalculationEvent.java → src/main/java/inn/ocsf/bee/freigeld/core/model/EmitterStopRecalculationEvent.java

@@ -1,4 +1,4 @@
-package in.ocsf.bee.freigeld.core.model;
+package inn.ocsf.bee.freigeld.core.model;
 
 import java.util.HashSet;
 import java.util.Set;

+ 1 - 1
src/main/java/in/ocsf/bee/freigeld/core/model/NaturalPerson.java → src/main/java/inn/ocsf/bee/freigeld/core/model/NaturalPerson.java

@@ -1,4 +1,4 @@
-package in.ocsf.bee.freigeld.core.model;
+package inn.ocsf.bee.freigeld.core.model;
 
 public interface NaturalPerson extends Person {
 }

+ 1 - 1
src/main/java/in/ocsf/bee/freigeld/core/model/Person.java → src/main/java/inn/ocsf/bee/freigeld/core/model/Person.java

@@ -1,4 +1,4 @@
-package in.ocsf.bee.freigeld.core.model;
+package inn.ocsf.bee.freigeld.core.model;
 
 import java.util.UUID;
 

+ 1 - 1
src/main/java/in/ocsf/bee/freigeld/core/model/PrivatePerson.java → src/main/java/inn/ocsf/bee/freigeld/core/model/PrivatePerson.java

@@ -1,4 +1,4 @@
-package in.ocsf.bee.freigeld.core.model;
+package inn.ocsf.bee.freigeld.core.model;
 
 public interface PrivatePerson extends Person {
 }

+ 20 - 0
src/main/java/inn/ocsf/bee/freigeld/core/model/data/CoinData.java

@@ -0,0 +1,20 @@
+package inn.ocsf.bee.freigeld.core.model.data;
+
+import org.bson.types.ObjectId;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document("coin")
+public class CoinData {
+
+    @Id
+    private ObjectId id;
+
+    public ObjectId getId() {
+        return id;
+    }
+
+    public void setId(ObjectId id) {
+        this.id = id;
+    }
+}

+ 9 - 0
src/main/java/inn/ocsf/bee/freigeld/core/repo/CoinRepository.java

@@ -0,0 +1,9 @@
+package inn.ocsf.bee.freigeld.core.repo;
+
+import inn.ocsf.bee.freigeld.core.model.data.CoinData;
+import org.bson.types.ObjectId;
+import org.springframework.data.mongodb.repository.MongoRepository;
+import org.springframework.data.querydsl.QuerydslPredicateExecutor;
+
+public interface CoinRepository extends MongoRepository<CoinData, ObjectId>, QuerydslPredicateExecutor<CoinData> {
+}

+ 1 - 1
src/main/java/in/ocsf/bee/freigeld/utils/ZBase32Utils.java → src/main/java/inn/ocsf/bee/freigeld/utils/ZBase32Utils.java

@@ -1,4 +1,4 @@
-package in.ocsf.bee.freigeld.utils;
+package inn.ocsf.bee.freigeld.utils;
 
 import org.apache.commons.codec.binary.ZBase32;
 

+ 1 - 1
src/main/kotlin/in/ocsf/bee/freigeld/core/FreiApp.kt → src/main/kotlin/inn/ocsf/bee/freigeld/core/FreiApp.kt

@@ -1,4 +1,4 @@
-package `in`.ocsf.bee.freigeld.core
+package inn.ocsf.bee.freigeld.core
 
 import org.springframework.boot.SpringApplication
 import org.springframework.boot.autoconfigure.SpringBootApplication

+ 6 - 7
src/main/kotlin/in/ocsf/bee/freigeld/core/demo/DemoInMem.kt → src/main/kotlin/inn/ocsf/bee/freigeld/core/demo/DemoInMem.kt

@@ -1,7 +1,8 @@
-package `in`.ocsf.bee.freigeld.core.demo
+package inn.ocsf.bee.freigeld.core.demo
 
-import `in`.ocsf.bee.freigeld.core.model.*
+import GlobalEmitter
 import com.oblac.nomen.Nomen
+import inn.ocsf.bee.freigeld.core.model.*
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.GlobalScope
 import kotlinx.coroutines.launch
@@ -44,8 +45,8 @@ class DemoInMem {
         emitter.emit(10, CoinValue.mega)
 
         bank.exchange(bank.getSelfAccount(), emitter, 1_300_000)
-        (0 until 10).forEach { personMap.computeIfAbsent(UUID.randomUUID()) { id -> DemoHuman(id, Nomen.randomName()) } }
-        personMap.keys.map { bank.addAccount(it) }.subList(0, 10).forEach {
+        (0 until 100).forEach { personMap.computeIfAbsent(UUID.randomUUID()) { id -> DemoHuman(id, Nomen.randomName()) } }
+        personMap.keys.map { bank.addAccount(it) }.forEach {
             bank.exchange(it, bank.getSelfAccount(), 1_200 + (500 * Math.random()).roundToLong())
                     .thenRun({ log.info("exchange ok") })
                     .exceptionally({ log.error("exchange error"); null })
@@ -902,6 +903,4 @@ class CoinUtils {
             }
         }
     }
-}
-
-interface GlobalEmitter : Emitter, BankAccount
+}

+ 4 - 0
src/main/kotlin/inn/ocsf/bee/freigeld/core/model/GlobalEmitter.kt

@@ -0,0 +1,4 @@
+import inn.ocsf.bee.freigeld.core.model.BankAccount
+import inn.ocsf.bee.freigeld.core.model.Emitter
+
+interface GlobalEmitter : Emitter, BankAccount

+ 4 - 0
src/main/resources/application-dev.yaml

@@ -1,2 +1,6 @@
 server:
   port: 4200
+spring:
+  data:
+    mongodb:
+      uri: mongodb://roof:27017/frei

+ 3 - 3
src/test/kotlin/`in`/ocsf/bee/freigeld/core/demo/CoinUtilsTest.kt → src/test/kotlin/inn/ocsf/bee/freigeld/core/demo/CoinUtilsTest.kt

@@ -1,7 +1,7 @@
-package `in`.ocsf.bee.freigeld.core.demo
+package inn.ocsf.bee.freigeld.core.demo
 
-import `in`.ocsf.bee.freigeld.core.model.Coin
-import `in`.ocsf.bee.freigeld.core.model.CoinValue
+import inn.ocsf.bee.freigeld.core.model.Coin
+import inn.ocsf.bee.freigeld.core.model.CoinValue
 import org.junit.jupiter.api.RepeatedTest
 import org.junit.jupiter.api.Test
 import org.slf4j.LoggerFactory