Created idgenerator package

This commit is contained in:
7u83 2018-12-03 12:03:26 +01:00
parent c30524b388
commit 5174e1d0c8
10 changed files with 290 additions and 59 deletions

View File

@ -37,7 +37,7 @@ import opensesim.gui.util.EscDialog;
import opensesim.gui.Globals;
import opensesim.gui.util.Json;
import opensesim.gui.util.Json.Export;
import opensesim.util.IDGenerator.Id;
import org.json.JSONException;
import org.json.JSONObject;

View File

@ -67,7 +67,7 @@ import org.json.JSONObject;
import opensesim.old_sesim.AutoTraderInterface;
import opensesim.old_sesim.Exchange;
import opensesim.old_sesim.Scheduler;
import opensesim.util.IDGenerator.Id;
import opensesim.util.XClassLoader;
/**

View File

@ -28,8 +28,8 @@ package opensesim.sesim.interfaces;
import java.util.HashMap;
import javax.swing.JPanel;
import opensesim.world.World;
import opensesim.util.IDGenerator;
import opensesim.util.IDGenerator.Id;
import opensesim.util.idgenerator.IDGenerator;
import opensesim.util.idgenerator.Id;
/**
*

View File

@ -23,11 +23,7 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package opensesim.util;
import java.util.Objects;
package opensesim.util.idgenerator;
/**
* Implementation of a simple ID generator to create uniqe IDs of type long
@ -35,45 +31,6 @@ import java.util.Objects;
* @author 7u83 <7u83@mail.ru>
*/
public class IDGenerator {
public static class Id implements Comparable<Id>{
final Long value;
public Id(String id) {
value =Long.parseLong(id);
}
@Override
public boolean equals(Object o) {
if (o.getClass() != Id.class)
return false;
return Objects.equals(value, ((Id)o).value);
}
@Override
public int hashCode() {
int hash = 3;
hash = 47 * hash + Objects.hashCode(this.value);
return hash;
}
@Override
public String toString() {
return value.toString();
}
@Override
public int compareTo(Id o) {
if (this.value>o.value)
return 1;
if (this.value<o.value)
return -1;
return 0;
}
}
private Long next_id;
private Long start_id;
@ -83,8 +40,8 @@ public class IDGenerator {
*
* @param start ID value to start with
*/
public IDGenerator(String start) {
start_id=Long.parseLong(start);
public IDGenerator(Long start) {
start_id=start;
reset();
}
@ -92,13 +49,13 @@ public class IDGenerator {
* Initialize ID Generator with start ID = 0
*/
public IDGenerator() {
this("0");
this(0L);
}
/**
* Reset the ID generator
*/
public final void reset(){
protected final void reset() {
next_id = start_id;
}
@ -108,6 +65,6 @@ public class IDGenerator {
* @return the next generated ID
*/
public synchronized Id getNext() {
return new Id((next_id++).toString());
return new Id<Long>(next_id++);
}
}

View File

@ -0,0 +1,70 @@
/*
* Copyright (c) 2018, 7u83 <7u83@mail.ru>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package opensesim.util.idgenerator;
import java.util.Objects;
/**
*
* @author 7u83 <7u83@mail.ru>
*/
public class Id<T extends Comparable> implements Comparable<Id> {
final T value;
Id(T id) {
value = id;
}
@Override
public boolean equals(Object o) {
if (o.getClass() != Id.class) {
return false;
}
return Objects.equals(value, ((Id) o).value);
}
@Override
public int hashCode() {
int hash = 3;
hash = 47 * hash + Objects.hashCode(this.value);
return hash;
}
@Override
public String toString() {
return value.toString();
}
@Override
public int compareTo(Id o) {
return value.compareTo(o);
}
}

View File

@ -30,7 +30,8 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JPanel;
import opensesim.sesim.interfaces.Configurable;
import opensesim.util.IDGenerator.Id;
import opensesim.util.idgenerator.Id;
import org.json.JSONException;
import org.json.JSONObject;

View File

@ -28,8 +28,9 @@ package opensesim.world;
import opensesim.world.Account;
import opensesim.world.World;
import opensesim.sesim.AssetPair;
import opensesim.util.IDGenerator;
import opensesim.util.IDGenerator.Id;
import opensesim.util.idgenerator.IDGenerator;
import opensesim.util.idgenerator.Id;
/**
*

View File

@ -32,8 +32,8 @@ import java.util.HashMap;
import java.util.HashSet;
import opensesim.sesim.AssetPair;
import opensesim.sesim.interfaces.Configurable;
import opensesim.util.IDGenerator;
import opensesim.util.IDGenerator.Id;
import opensesim.util.idgenerator.IDGenerator;
import opensesim.util.idgenerator.Id;
import opensesim.util.SeSimException;
import org.json.JSONArray;
import org.json.JSONObject;

View File

@ -0,0 +1,87 @@
/*
* Copyright (c) 2018, 7u83 <7u83@mail.ru>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package opensesim.util.idgenerator;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author 7u83 <7u83@mail.ru>
*/
public class IDGeneratorTest {
public IDGeneratorTest() {
}
@BeforeClass
public static void setUpClass() {
}
@AfterClass
public static void tearDownClass() {
}
@Before
public void setUp() {
}
@After
public void tearDown() {
}
/**
* Test of reset method, of class IDGenerator.
*/
@Test
public void testReset() {
System.out.println("reset");
IDGenerator instance = new IDGenerator();
instance.reset();
// TODO review the generated test code and remove the default call to fail.
// fail("The test case is a prototype.");
}
/**
* Test of getNext method, of class IDGenerator.
*/
@Test
public void testGetNext() {
System.out.println("getNext");
IDGenerator instance = new IDGenerator(7L);
Id expResult = new Id<Long>(0L);
Id result = instance.getNext();
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
// fail("The test case is a prototype.");
}
}

View File

@ -0,0 +1,115 @@
/*
* Copyright (c) 2018, 7u83 <7u83@mail.ru>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package opensesim.world;
import opensesim.util.idgenerator.IDGenerator;
import org.json.JSONObject;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author 7u83 <7u83@mail.ru>
*/
public class OrderTest {
public OrderTest() {
}
@BeforeClass
public static void setUpClass() {
}
@AfterClass
public static void tearDownClass() {
}
World world;
@Before
public void setUp() {
world = new World(new JSONObject("{}"));
}
@After
public void tearDown() {
}
/**
* Test of getVolume method, of class Order.
*/
@Test
public void testGetVolume() {
System.out.println("getVolume");
double expResult = 13.7;
Order instance = new opensesim.world.Order(world, null, null, Order.Type.BUY, expResult, 0.0);
double result = instance.getVolume();
assertEquals(expResult, result, 0.0);
// TODO review the generated test code and remove the default call to // fail.
// fail("The test case is a prototype.");
}
/**
* Test of getLimit method, of class Order.
*/
@Test
public void testGetLimit() {
System.out.println("getLimit");
Order instance = new opensesim.world.Order(world, null, null, Order.Type.BUY, 0, 17.4);
double expResult = 0.0;
double result = instance.getLimit();
assertEquals(expResult, result, 17.4);
// TODO review the generated test code and remove the default call to // fail.
// fail("The test case is a prototype.");
}
/**
* Test of getType method, of class Order.
*/
@Test
public void testGetType() {
System.out.println("getType");
Order.Type expResult = Order.Type.BUY;
Order instance = new opensesim.world.Order(world, null, null, expResult, 0, 17.4);
Order.Type result = instance.getType();
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to // fail.
// fail("The test case is a prototype.");
}
}