Search in sources :

Example 16 with GeographyValue

use of org.voltdb.types.GeographyValue in project voltdb by VoltDB.

the class TestPolygonFactory method testRegularConvexPolygon.

public void testRegularConvexPolygon() throws Exception {
    // Test a triangle.
    GeographyValue pt3 = PolygonFactory.CreateRegularConvex(origin, y.mul(20.0), 3, 0);
    String triangle = "POLYGON ((0.0 20.0, -17.320508075689 -10.0, 17.320508075689 -10.0, 0.0 20.0))";
    assertEquals(triangle, pt3.toString());
    // Test a square.
    GeographyValue pt4 = PolygonFactory.CreateRegularConvex(origin, y.mul(20).add(x.mul(20)), 4, 0);
    String square = "POLYGON ((20.0 20.0, -20.0 20.0, -20.0 -20.0, 20.0 -20.0, 20.0 20.0))";
    assertEquals(square, pt4.toString());
    GeographyPointValue offset = x.mul(20).add(y.mul(20));
    GeographyValue pt4plus = pt4.add(offset);
    String squareOff = "POLYGON ((40.0 40.0, 0.0 40.0, 0.0 0.0, 40.0 0.0, 40.0 40.0))";
    assertEquals(squareOff, pt4plus.toString());
    // For n = 3 to 10, generate a regular polygon with n points
    // centered at the origin starting at the given start vertex.
    GeographyPointValue startVertex = x.add(y);
    for (int npts = 3; npts < 10; npts += 1) {
        GeographyValue regularConvex = PolygonFactory.CreateRegularConvex(origin, startVertex, npts, 0.0);
        List<List<GeographyPointValue>> loops = regularConvex.getRings();
        assertEquals(1, loops.size());
        List<GeographyPointValue> loop = loops.get(0);
        assertEquals(npts + 1, loop.size());
        regularConvex = PolygonFactory.CreateRegularConvex(origin, startVertex, npts, 0.5);
        loops = regularConvex.getRings();
        assertEquals(2, loops.size());
        assertEquals(npts + 1, loops.get(0).size());
        assertEquals(npts + 1, loops.get(1).size());
    }
}
Also used : GeographyValue(org.voltdb.types.GeographyValue) List(java.util.List) ArrayList(java.util.ArrayList) GeographyPointValue(org.voltdb.types.GeographyPointValue)

Example 17 with GeographyValue

use of org.voltdb.types.GeographyValue in project voltdb by VoltDB.

the class GenerateCPPTestFiles method main.

/**
     * @param args
     */
public static void main(String[] args) throws Exception {
    boolean generateGeoMessages = true;
    String clientDataDirName = ".";
    long clusterStartTime = CLUSTER_START_TIME;
    int clusterRoundTripTime = CLUSTER_ROUND_TRIP_TIME;
    long clientData = CLIENT_DATA;
    int leaderIPAddr = LEADER_IP_ADDR;
    String buildString = BUILD_STRING;
    for (int idx = 0; idx < args.length; idx += 1) {
        if ("--client-dir".equals(args[idx])) {
            idx += 1;
            clientDataDirName = args[idx];
        } else if ("--clusterStartTime".equals(args[idx])) {
            idx += 1;
            clusterStartTime = Long.valueOf(args[idx]);
        } else if ("--clientData".equals(args[idx])) {
            idx += 1;
            clientData = Long.valueOf(args[idx]);
        } else if ("--leaderIPAddr".equals(args[idx])) {
            idx += 1;
            leaderIPAddr = Integer.valueOf(args[idx]);
        } else if ("--clusterRoundTripTime".equals(args[idx])) {
            idx += 1;
            clusterRoundTripTime = Integer.valueOf(args[idx]);
        } else if ("--no-geo-messages".equals(args[idx])) {
            generateGeoMessages = false;
        } else {
            abend("Unknown command line argument \"%s\"\n", args[idx]);
        }
    }
    // Make the client data directory if necessary.
    File clientDataDir = new File(clientDataDirName);
    if (clientDataDir.exists() && !clientDataDir.isDirectory()) {
        if (!clientDataDir.isDirectory()) {
            abend("Client data dir \"%s\" exists but is not a directory.\n", clientDataDirName);
        }
    } else {
        clientDataDir.mkdirs();
    }
    //
    // Capture a HASH_SHA256 style authentication message.  We do this by
    // creating a fake server, then, in a separate thread, creating an ordinary
    // client which connects to the fake server.  We read the authentication
    // request from the client, save it, send a faked authentication response,
    // close the server and join with the created thread.
    //
    ServerSocketChannel ssc = ServerSocketChannel.open();
    ssc.socket().bind(new InetSocketAddress("localhost", FAKE_SERVER_PORT));
    ClientConfig config = new ClientConfig("hello", "world", (ClientStatusListenerExt) null, ClientAuthScheme.HASH_SHA256);
    final org.voltdb.client.Client client = ClientFactory.createClient(config);
    Thread clientThread = new Thread() {

        @Override
        public void run() {
            try {
                client.createConnection("localhost", FAKE_SERVER_PORT);
                client.close();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    };
    clientThread.setDaemon(true);
    clientThread.start();
    SocketChannel sc = ssc.accept();
    sc.socket().setTcpNoDelay(true);
    ByteBuffer authReqSHA256 = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
    sc.configureBlocking(true);
    readMessage(authReqSHA256, sc);
    writeDataFile(clientDataDir, "authentication_request_sha256.msg", authReqSHA256);
    writeServerAuthenticationResponse(sc, true);
    ssc.close();
    clientThread.join(0);
    //
    // Now, create a fake server again, and login with the HASH_SHA1 scheme.
    // We save this authentication request as well.  The client in the
    // separate thread then sends some procedure invocation messages.  We
    // save all of these in files and then join with the client thread.
    //
    ssc = ServerSocketChannel.open();
    ssc.socket().bind(new InetSocketAddress("localhost", FAKE_SERVER_PORT));
    config = new ClientConfig("hello", "world", (ClientStatusListenerExt) null, ClientAuthScheme.HASH_SHA1);
    final org.voltdb.client.Client oclient = ClientFactory.createClient(config);
    Thread oclientThread = new Thread() {

        @Override
        public void run() {
            NullCallback ncb = new NullCallback();
            try {
                oclient.createConnection("localhost", FAKE_SERVER_PORT);
                oclient.callProcedure("Insert", "Hello", "World", "English");
                try {
                    oclient.callProcedure("Insert", "Hello", "World", "English");
                } catch (Exception e) {
                }
                oclient.callProcedure("Select", "English");
                //
                // Geo support.
                //
                // Insert a point and a polygon.
                oclient.callProcedure("InsertGeo", 200, GeographyValue.fromWKT(smallPolyTxt), GeographyPointValue.fromWKT(smallPointTxt));
                // Insert two nulls for points and polygons.
                oclient.callProcedure("InsertGeo", 201, null, null);
                // Select one row with a point and a polygon both.
                oclient.callProcedure("SelectGeo", 100);
                // Select another row with a different point and polygon.
                oclient.callProcedure("SelectGeo", 101);
                // Select one row with a null polygon and one non-null point.
                oclient.callProcedure("SelectGeo", 102);
                // Select one row with a non-null polygon and a null point.
                oclient.callProcedure("SelectGeo", 103);
                // Select one row with two nulls.
                oclient.callProcedure("SelectGeo", 104);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    };
    oclientThread.setDaemon(true);
    oclientThread.start();
    sc = ssc.accept();
    sc.socket().setTcpNoDelay(true);
    ByteBuffer authReqSHA1 = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
    sc.configureBlocking(true);
    readMessage(authReqSHA1, sc);
    writeDataFile(clientDataDir, "authentication_request.msg", authReqSHA1);
    writeServerAuthenticationResponse(sc, true);
    //
    // Read some call procedure messages.
    //
    // The client engages us in some witty banter, which we don't
    // actually care about for the purposes of this program.  But
    // we need to read past it, and acknowledge it anyway.  We are
    // acting as a server here.  We don't need to change the client
    // data at all.
    //
    ByteBuffer subscription_request = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
    readMessage(subscription_request, sc);
    writeServerCallResponse(sc, getRequestClientData(subscription_request));
    ByteBuffer stats_request = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
    readMessage(stats_request, sc);
    writeServerCallResponse(sc, getRequestClientData(stats_request));
    ByteBuffer syscat_request = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
    readMessage(syscat_request, sc);
    writeServerCallResponse(sc, getRequestClientData(stats_request));
    //
    // Now, read the invocation requests from the client.  We can't
    // actually respond, so we fake up a response.  But this is good
    // enough for now, and we save the message.
    //
    String[] vanillaFileNames = new String[] { "invocation_request_success.msg", "invocation_request_fail_cv.msg", "invocation_request_select.msg" };
    Map<String, ByteBuffer> vanillaMessages = new HashMap<String, ByteBuffer>();
    for (String fileName : vanillaFileNames) {
        ByteBuffer responseMessage = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
        vanillaMessages.put(fileName, responseMessage);
        readMessage(responseMessage, sc);
        writeServerCallResponse(sc, getRequestClientData(responseMessage));
        // Set the client data.  The value here is not important, but it
        // needs to be shared between this and the client unit tests.
        setRequestClientData(responseMessage, clientData);
        writeDataFile(clientDataDir, fileName, responseMessage);
    }
    // Note that these names are somewhat stylized.  They name
    // the file which holds the request.  The response to this
    // request will be in a similarly named file, but with _request_
    // replaced by _response_.  So, make sure there is one _request_
    // substring in the file names.
    String[] geoFileNames = new String[] { "invocation_request_insert_geo.msg", "invocation_request_insert_geo_nulls.msg", "invocation_request_select_geo_both.msg", "invocation_request_select_geo_both_mid.msg", "invocation_request_select_geo_polynull.msg", "invocation_request_select_geo_ptnull.msg", "invocation_request_select_geo_bothnull.msg" };
    Map<String, ByteBuffer> geoMessages = new HashMap<String, ByteBuffer>();
    for (String filename : geoFileNames) {
        ByteBuffer requestMessage = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
        // We need to save these for later.
        geoMessages.put(filename, requestMessage);
        readMessage(requestMessage, sc);
        writeServerCallResponse(sc, getRequestClientData(requestMessage));
        setRequestClientData(requestMessage, clientData);
        if (generateGeoMessages) {
            writeDataFile(clientDataDir, filename, requestMessage);
        }
    }
    oclient.close();
    ssc.close();
    oclientThread.join();
    // Now, connect to a real server.  We are going to pretend to be a
    // client and write the messages we just read from the client, as we pretended to be
    // a server.  We will then capture the responses in files.
    SocketChannel voltsc = null;
    try {
        voltsc = SocketChannel.open(new InetSocketAddress("localhost", TRUE_SERVER_PORT));
        voltsc.socket().setTcpNoDelay(true);
        voltsc.configureBlocking(true);
        System.err.printf("Connected.\n");
    } catch (IOException ex) {
        abend("Can't connect to a server.  Is there a VoltDB server running?.\n");
    }
    // Write the authentication message and then
    // read the response.  We need the response.  The
    // Client will engage in witty repartee with the
    // server, but we neither see nor care about that.
    //
    // Note that for each of these responses we need to
    // set some parameters, so that they will not depend
    // on the particular context we executed.  This is the
    // cluster start time, the client data, the leader IP
    // address and the build string.  The client unit tests
    // will know these values.
    //
    ByteBuffer scratch = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
    voltsc.write(authReqSHA1);
    readMessage(scratch, voltsc);
    setClusterStartTimestamp(scratch, clusterStartTime);
    setLeaderIPAddr(scratch, leaderIPAddr);
    setBuildString(scratch, buildString);
    writeDataFile(clientDataDir, "authentication_response.msg", scratch);
    for (String filename : vanillaFileNames) {
        // Write the three procedure messages.
        ByteBuffer requestMessage = vanillaMessages.get(filename);
        if (requestMessage == null) {
            abend("Cannot find request message for file name \"%s\"\n", filename);
        }
        voltsc.write(requestMessage);
        readMessage(scratch, voltsc);
        setResponseClientData(scratch, clientData);
        setClusterRoundTripTime(scratch, clusterRoundTripTime);
        String responseFileName = filename.replaceAll("_request_", "_response_");
        writeDataFile(clientDataDir, responseFileName, scratch);
    }
    if (generateGeoMessages) {
        for (String filename : geoFileNames) {
            // Write the three procedure messages.
            ByteBuffer requestMessage = geoMessages.get(filename);
            if (requestMessage == null) {
                abend("Cannot find request message for file name \"%s\"\n", filename);
            }
            voltsc.write(requestMessage);
            readMessage(scratch, voltsc);
            setResponseClientData(scratch, clientData);
            setClusterRoundTripTime(scratch, clusterRoundTripTime);
            String responseFileName = filename.replaceAll("_request_", "_response_");
            System.out.printf("Writing Response file \"%s\".\n", responseFileName);
            writeDataFile(clientDataDir, responseFileName, scratch);
        }
    }
    voltsc.close();
    clientThread.join();
    Thread.sleep(3000);
    ssc = ServerSocketChannel.open();
    ssc.socket().bind(new InetSocketAddress("localhost", FAKE_SERVER_PORT));
    clientThread = new Thread() {

        @Override
        public void run() {
            try {
                org.voltdb.client.Client newClient = ClientFactory.createClient();
                newClient.createConnection("localhost", FAKE_SERVER_PORT);
                String[] strings = new String[] { "oh", "noes" };
                byte[] bytes = new byte[] { 22, 33, 44 };
                short[] shorts = new short[] { 22, 33, 44 };
                int[] ints = new int[] { 22, 33, 44 };
                long[] longs = new long[] { 22, 33, 44 };
                double[] doubles = new double[] { 3, 3.1, 3.14, 3.1459 };
                TimestampType[] timestamps = new TimestampType[] { new TimestampType(33), new TimestampType(44) };
                BigDecimal[] bds = new BigDecimal[] { new BigDecimal("3"), new BigDecimal("3.14"), new BigDecimal("3.1459") };
                try {
                    newClient.callProcedure("foo", strings, bytes, shorts, ints, longs, doubles, timestamps, bds, null, "ohnoes!", (byte) 22, (short) 22, 22, (long) 22, 3.1459, new TimestampType(33), new BigDecimal("3.1459"));
                } catch (Exception e) {
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };
    clientThread.setDaemon(true);
    clientThread.start();
    voltsc = ssc.accept();
    // Read the authentication message.  We don't need it.
    readMessage(scratch, voltsc);
    writeServerAuthenticationResponse(voltsc, true);
    //
    // The client engages us in some dialog.  We don't need this
    // either, but we need to read past it.
    //
    subscription_request = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
    readMessage(subscription_request, voltsc);
    writeServerCallResponse(voltsc, getRequestClientData(subscription_request));
    stats_request = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
    readMessage(stats_request, voltsc);
    writeServerCallResponse(voltsc, getRequestClientData(stats_request));
    syscat_request = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
    readMessage(syscat_request, voltsc);
    writeServerCallResponse(voltsc, getRequestClientData(stats_request));
    // Read the all-types call procedure message.
    readMessage(scratch, voltsc);
    writeServerCallResponse(voltsc, getRequestClientData(scratch));
    setRequestClientData(scratch, clientData);
    writeDataFile(clientDataDir, "invocation_request_all_params.msg", scratch);
    voltsc.close();
    clientThread.join();
    //
    // Serialize a message and write it.
    //
    ColumnInfo[] columns = new ColumnInfo[] { new ColumnInfo("column1", VoltType.TINYINT), new ColumnInfo("column2", VoltType.STRING), new ColumnInfo("column3", VoltType.SMALLINT), new ColumnInfo("column4", VoltType.INTEGER), new ColumnInfo("column5", VoltType.BIGINT), new ColumnInfo("column6", VoltType.TIMESTAMP), new ColumnInfo("column7", VoltType.DECIMAL), new ColumnInfo("column8", VoltType.GEOGRAPHY), new ColumnInfo("column9", VoltType.GEOGRAPHY_POINT) };
    VoltTable vt = new VoltTable(columns);
    GeographyValue poly = GeographyValue.fromWKT(smallPolyTxt);
    GeographyPointValue pt = GeographyPointValue.fromWKT(smallPointTxt);
    vt.addRow(null, null, null, null, null, null, null, poly, pt);
    vt.addRow(0, "", 2, 4, 5, new TimestampType(44), new BigDecimal("3.1459"), poly, pt);
    vt.addRow(0, null, 2, 4, 5, null, null, poly, pt);
    vt.addRow(null, "woobie", null, null, null, new TimestampType(44), new BigDecimal("3.1459"), poly, pt);
    ByteBuffer bb = ByteBuffer.allocate(vt.getSerializedSize());
    vt.flattenToBuffer(bb);
    FastSerializer fs = new FastSerializer(vt.getSerializedSize());
    fs.write(bb);
    bb.flip();
    writeDataFile(clientDataDir, "serialized_table.bin", bb);
    clientThread.join();
}
Also used : ServerSocketChannel(java.nio.channels.ServerSocketChannel) SocketChannel(java.nio.channels.SocketChannel) HashMap(java.util.HashMap) InetSocketAddress(java.net.InetSocketAddress) FastSerializer(org.voltdb.messaging.FastSerializer) ColumnInfo(org.voltdb.VoltTable.ColumnInfo) TimestampType(org.voltdb.types.TimestampType) NullCallback(org.voltdb.client.NullCallback) ClientConfig(org.voltdb.client.ClientConfig) ServerSocketChannel(java.nio.channels.ServerSocketChannel) GeographyValue(org.voltdb.types.GeographyValue) IOException(java.io.IOException) ByteBuffer(java.nio.ByteBuffer) IOException(java.io.IOException) BigDecimal(java.math.BigDecimal) ClientStatusListenerExt(org.voltdb.client.ClientStatusListenerExt) File(java.io.File) GeographyPointValue(org.voltdb.types.GeographyPointValue)

Example 18 with GeographyValue

use of org.voltdb.types.GeographyValue in project voltdb by VoltDB.

the class TestGeospatialFunctions method testPolygonAsText.

public void testPolygonAsText() throws Exception {
    Client client = getClient();
    populateTables(client);
    // polygon whose co-ordinates are mix of decimal and whole numbers - test
    // decimal rounding border cases
    Border someWhere = new Border(50, "someWhere", "someWhere", new GeographyValue("POLYGON ((-10.1234567891234 10.1234567891234, " + "-14.1234567891264 10.1234567891234, " + "-14.0 4.1234567891235, " + "-12.0 4.4555555555555555550, " + "-11.0 4.4999999999996, " + "-10.1234567891234 10.1234567891234))"));
    VoltTable vt = client.callProcedure("BORDERS.Insert", someWhere.getPk(), someWhere.getName(), someWhere.getMessage(), someWhere.getRegion()).getResults()[0];
    validateTableOfScalarLongs(vt, new long[] { 1 });
    // polygon with 2 holes and whose vertices are whole numbers - test for whole number rounding
    someWhere = new Border(51, "someWhereWithHoles", "someWhereWithHoles", new GeographyValue("POLYGON ((10 10, -10 10, -10 1, 10 1, 10 10)," + "(-8 9, -8 8, -9 8, -9 9, -8 9)," + "(9 9,  9 8, 8 8, 8 9, 9 9))"));
    vt = client.callProcedure("BORDERS.Insert", someWhere.getPk(), someWhere.getName(), someWhere.getMessage(), someWhere.getRegion()).getResults()[0];
    validateTableOfScalarLongs(vt, new long[] { 1 });
    // polygon with hole whose co-ordinates are whole numbers
    someWhere = new Border(52, "someWhereWithHoles", "someWhereWithHoles", new GeographyValue("POLYGON ((10 10, -10 10, -10 1, 10 1, 10 10)," + "(9 9, 9 8, 8 8, 8 9, 9 9)," + "(-8 9, -8 8, -9 8, -9 9, -8 9))"));
    vt = client.callProcedure("BORDERS.Insert", someWhere.getPk(), someWhere.getName(), someWhere.getMessage(), someWhere.getRegion()).getResults()[0];
    validateTableOfScalarLongs(vt, new long[] { 1 });
    // get WKT representation using asText()
    vt = client.callProcedure("@AdHoc", "select region, asText(region) from borders order by pk").getResults()[0];
    // get WKT representation using cast(polygon as varchar)
    VoltTable castVT = client.callProcedure("@AdHoc", "select region, cast(region as VARCHAR) from borders order by pk").getResults()[0];
    // verify results of asText from EE matches WKT format defined in frontend/java
    GeographyValue gv;
    while (vt.advanceRow()) {
        gv = vt.getGeographyValue(0);
        if (gv == null) {
            assertEquals(null, vt.getString(1));
        } else {
            assertEquals(gv.toString(), vt.getString(1));
        }
    }
    // verify WKT from asText and cast(polygon as varchar) results are same.
    assertEquals(vt, castVT);
}
Also used : GeographyValue(org.voltdb.types.GeographyValue) Client(org.voltdb.client.Client) VoltTable(org.voltdb.VoltTable)

Example 19 with GeographyValue

use of org.voltdb.types.GeographyValue in project voltdb by VoltDB.

the class TestPolygonFactory method testStarPolygon.

public void testStarPolygon() throws Exception {
    for (int idx = 3; idx < 10; idx += 1) {
        GeographyValue star = PolygonFactory.CreateStar(origin, y.mul(20.0), idx, 0.5, 0.0);
        List<List<GeographyPointValue>> loops = star.getRings();
        assertEquals(1, loops.size());
        List<GeographyPointValue> shell = loops.get(0);
        assertEquals(2 * idx + 1, shell.size());
        star = PolygonFactory.CreateStar(origin, y.mul(20).add(x.mul(20)), idx, 0.5, 0.1);
        loops = star.getRings();
        assertEquals(2, loops.size());
        shell = loops.get(0);
        List<GeographyPointValue> hole = loops.get(1);
        assertEquals(2 * idx + 1, shell.size());
        assertEquals(2 * idx + 1, hole.size());
    }
}
Also used : GeographyValue(org.voltdb.types.GeographyValue) List(java.util.List) ArrayList(java.util.ArrayList) GeographyPointValue(org.voltdb.types.GeographyPointValue)

Example 20 with GeographyValue

use of org.voltdb.types.GeographyValue in project voltdb by VoltDB.

the class TestPolygonFactory method makeStarPolygons.

/**
     * Create many star-like polygons.  In returnValue.get(n).get(s).get(k) we put an
     * n-pointed polygon with the given center and start vertex.  The inner radius is
     * (numIrLevels-s+1)/numIrLevels.  The hole size is k/numHoleSizeLevels.
     * If k == 0, there is no hole.
     *
     * Note that n ranges between minNumPoints and maxNumPoints inclusive,
     * s between 0 numIrLevels-1, k between 0 and numHoleSizeLevels-1.  Since
     * the hole size and inner radius must both be less than 1, and the inner radius
     * must be greater than zero.  The hole size can be zero.
     *
     * @return A 3-dimensional list list of polygons.
     */
private static List<List<List<GeographyValue>>> makeStarPolygons(GeographyPointValue firstCenter, GeographyPointValue firstFirstVertex, int minNumPoints, int maxNumPoints, int numIRLevels, int numHoleSizeLevels, double xmul, double ymul) {
    List<List<List<GeographyValue>>> answer = new ArrayList<List<List<GeographyValue>>>();
    for (int numSides = minNumPoints; numSides <= maxNumPoints; numSides += 1) {
        int idx = numSides - minNumPoints;
        // The x coordinate is xmul * idx
        GeographyPointValue column = x.mul(xmul * idx);
        List<List<GeographyValue>> oneSize = new ArrayList<List<GeographyValue>>();
        for (int ratioLevel = 0; ratioLevel < numIRLevels; ratioLevel += 1) {
            GeographyPointValue irCenter = column.add(y.mul(numHoleSizeLevels * ymul * ratioLevel));
            List<GeographyValue> oneRadius = new ArrayList<GeographyValue>();
            for (int holeNumber = 0; holeNumber < numHoleSizeLevels; holeNumber += 1) {
                GeographyPointValue offset = irCenter.add(y.mul(ymul * holeNumber));
                GeographyPointValue center = firstCenter.add(offset);
                GeographyPointValue firstVertex = firstFirstVertex.add(offset);
                oneRadius.add(PolygonFactory.CreateStar(center, firstVertex, numSides, (ratioLevel + 1.0) / numIRLevels, (holeNumber + 0.0) / numHoleSizeLevels));
            }
            oneSize.add(oneRadius);
        }
        answer.add(oneSize);
    }
    return answer;
}
Also used : GeographyValue(org.voltdb.types.GeographyValue) ArrayList(java.util.ArrayList) List(java.util.List) ArrayList(java.util.ArrayList) GeographyPointValue(org.voltdb.types.GeographyPointValue)

Aggregations

GeographyValue (org.voltdb.types.GeographyValue)33 GeographyPointValue (org.voltdb.types.GeographyPointValue)23 TimestampType (org.voltdb.types.TimestampType)11 BigDecimal (java.math.BigDecimal)10 VoltTable (org.voltdb.VoltTable)10 ArrayList (java.util.ArrayList)8 List (java.util.List)8 Client (org.voltdb.client.Client)6 IOException (java.io.IOException)5 JSONString (org.json_voltpatches.JSONString)4 VoltType (org.voltdb.VoltType)3 ByteBuffer (java.nio.ByteBuffer)2 JSONObject (org.json_voltpatches.JSONObject)2 BBContainer (org.voltcore.utils.DBBPool.BBContainer)2 ColumnInfo (org.voltdb.VoltTable.ColumnInfo)2 NullCallback (org.voltdb.client.NullCallback)2 File (java.io.File)1 BigInteger (java.math.BigInteger)1 InetSocketAddress (java.net.InetSocketAddress)1 ServerSocketChannel (java.nio.channels.ServerSocketChannel)1