Showing posts with label example. Show all posts
Showing posts with label example. Show all posts

Go: golang get command line arguments

Trabla: Go: golang get command line arguments


Solving:

os.Args provides access to raw command-line arguments.

Example - demo1.go:

package main

import "os"
import "fmt"

func main() {

    
    allArguments := os.Args
    allExceptFirstArguments := os.Args[1:]

    // Concrete arg using index
    arg0 := os.Args[0] // Programm name
    arg1 := os.Args[1] 
    arg2 := os.Args[2]
    arg3 := os.Args[3]
    arg4 := os.Args[4]

    fmt.Println( allArguments)
    fmt.Println( allExceptFirstArguments )

    fmt.Println( arg0 )
    fmt.Println( arg1 )
    fmt.Println( arg2 )
    fmt.Println( arg3 )
    fmt.Println( arg4 )
}

Go golang get command line arguments tutorial screenshot 1

Build and run

Go golang get command line arguments tutorial screenshot 2

C:\Users\samuraikit>cd C:\Users\samuraikit\Desktop\gotest
C:\Users\samuraikit\Desktop\gotest>go build demo1.go
C:\Users\samuraikit\Desktop\gotest>demo1 Arg0 Arg1 Arg2 Arg3
[demo1 Arg0 Arg1 Arg2 Arg3]
[Arg0 Arg1 Arg2 Arg3]
demo1
Arg0
Arg1
Arg2
Arg3
C:\Users\samuraikit\Desktop\gotest>

Go golang get command line arguments tutorial screenshot 3



Gson: java object to json

Trabla: Gson: java json parser example


Gson library java object to json tutorial



Gson (also known as Google Gson) is an open source Java library to serialize and deserialize Java objects to (and from) JSON.
https://en.wikipedia.org/wiki/Gson

Solving:

1. Download Gson jar from "The Central Repository"

http://search.maven.org/#artifactdetails%7Ccom.google.code.gson%7Cgson%7C2.6.2%7Cjar

Gson library java object to json tutorial screenshot 1


2. Drag-n-drop Gson .jar into your Eclipse project source folder

Gson library java object to json tutorial screenshot 2


3. Right click on jar - add "Build path" -> "Add to build path"

Gson library java object to json tutorial screenshot 3

Gson library java object to json tutorial screenshot 4


4. Source code

package com.codingtrabla.demos;

import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;

public class GsonUsageDemo {

public static void main(String[] args) {

Gson gson = new Gson();

List<String> list = new ArrayList<String>();

list.add("New York");
list.add("London");
list.add("Sydney");

String json = gson.toJson( list );

System.out.println(json);

}

}

Gson library java object to json tutorial screenshot 5

Gson library java object to json tutorial screenshot 6



Output:
["New York","London","Sydney"]

Gson library java object to json tutorial screenshot 7












Java: write text to file

Trabla: Java: write text to file


Java write text to file


Solving:

1. Source code

package demos;

import java.io.FileWriter;
import java.io.IOException;

public class WriteTextToFileDemo {

public static void main(String[] args) {

String text = "trololololo";

String filePath = "C:\\Users\\samuraikit\\workspace\\demos\\OUTPUT\\WriteTextToFileDemo.txt";

try {

FileWriter writer = new FileWriter(filePath);
writer.writetext );
writer.close();

} catch (IOException e) {
e.printStackTrace();
}

}

}



2. Eclipse project structure


eclipse IDE project structure

PostgreSQL: plpgsql: trigger on BEFORE UPDATE and INSERT example

Intro: PostgreSQL support triggers. Trigger is a special type of function which is executed BEFORE or AFTER  database row in database table is inserted , updated or deleted.

2 main steps to crate and assign trigger to PostgreSQL table are:
1. Create trigger function
2. Assign trigger function to table and specify when to execute trigger (BEFORE or AFTER events INSERT, UPDATE, DELETE events)

In this example we will create 2 table my_user and my_city, create trigger function and assign it to table my_user. It will be executed on BEFORE INSERT and UPDATE events and will add city to table my_city if it not exists.

Preconditions:
1. pgAdmin III installed
2. PostgreSQL installed

Let's write some code :)

1. Open SQL editor in pgAdmin III
2. Write and execute SQL to create sequencers for our table's id fields:

-- Create sequence for tables id
CREATE SEQUENCE my_user_id_seq START 1000;
CREATE SEQUENCE my_city_id_seq START 1000;

3. Write and execute SQL to create tables:

-- Create tables, and set ID's default values our sequencers
CREATE TABLE my_user(
        id numeric DEFAULT nextval('my_user_id_seq') PRIMARY KEY
    ,    name character varying(255) NOT NULL UNIQUE
    ,    city character varying(255) NOT NULL
);

CREATE TABLE my_city(
        id numeric DEFAULT nextval('my_city_id_seq') PRIMARY KEY
    ,    city character varying(255) NOT NULL UNIQUE
);

4. Create and execute trigger function

CREATE OR REPLACE FUNCTION func_my_user_city_trigger()
  RETURNS trigger AS
$BODY$
DECLARE

    -- declare varyiable
    city_exist int;
BEGIN


    -- TG_OP - is build-in PostgreSQL trigger variable with event type name

    IF  TG_OP='INSERT' OR TG_OP='UPDATE' THEN

    -- NEW - is build-in PostgreSQL trigger variable - it's table row with new data.
    -- OLD - is build-in PostgreSQL trigger variable - it's table row with old data (for UPDATE event)
    -- Please note:
    -- in BEFORE events NEW row NOT equals OLD row (exept data is same).
    -- in AFTER events NEW row equals OLD row.

       
    IF NEW.city IS NOT NULL THEN

    -- Check if city already not exist

    SELECT COUNT(*)
    FROM my_city  AS c
    WHERE  c.city = NEW.city
    INTO city_exist;


        IF city_exist = 0 THEN

            INSERT INTO my_city(city) VALUES(NEW.city);
       
        END IF;

    END IF;
    END IF;


RETURN NEW;
   
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

5. Assign trigger function to table - specify BEFORE | AFTER     INSERT | UPDATE | DELETE.
In our example we will use  BEFORE   INSERT | UPDATE.

 CREATE TRIGGER my_user_city_trigger
  BEFORE INSERT OR UPDATE
  ON my_user
  FOR EACH ROW
  EXECUTE PROCEDURE func_my_user_city_trigger();

Hooray, that's all !!! :)

Now let's do some testing:

1. Write and execute following script:

DELETE FROM my_user;
DELETE FROM my_city;

INSERT INTO my_user(name,city) VALUES( 'Obi-Wan' , 'Kiev' );
INSERT INTO my_user(name,city) VALUES( 'Darth Vader' , 'Moscow' );
INSERT INTO my_user(name,city) VALUES( 'Anakin Skywalker' , 'New York' );


UPDATE my_user SET city = 'Moscow' WHERE name = 'Obi-Wan';
UPDATE my_user SET city = 'Moscow' WHERE name = 'Darth Vader';
UPDATE my_user SET city = 'Beijing' WHERE name = 'Anakin Skywalker';

2. Select all records from my_city,  result should be:


PostgreSQL: plpgsql: trigger on BEFORE UPDATE and INSERT example - codingtrabla tutorial screenshot



PostgreSQL: plpgsql: Example of using ARRAY data type (one and two-dimentional) in plsql function

Intro: PostgreSQL supports ARRAY using in plpgsql functions. This example shows how to define, use and iterate throw arrays in plpgsql procedures.

Environment:
- Win 7
- PostgreSQL 9.2.4

Preconditions:
- PostgreSQL installed with plpgsql support
- pgAdmin III installed

Steps:
1. Open pgAdmin III
2. Select PostgreSQL server (double click in object browser)
PostgreSQL: plpgsql: Example of using ARRAY data type (one and two-dimentional) in plsql function - tutorial screenshot 1

3. Select Database

PostgreSQL: plpgsql: Example of using ARRAY data type (one and two-dimentional) in plsql function - tutorial screenshot 2
4. Select Schema
PostgreSQL: plpgsql: Example of using ARRAY data type (one and two-dimentional) in plsql function - tutorial screenshot 3

5. Select "Functions"
PostgreSQL: plpgsql: Example of using ARRAY data type (one and two-dimentional) in plsql function - tutorial screenshot 4

6. Click "SQL" button to open Query Editor
PostgreSQL: plpgsql: Example of using ARRAY data type (one and two-dimentional) in plsql function - tutorial screenshot 5
7. Type plpgsql script code and execute it:

CREATE OR REPLACE FUNCTION using_array_example()
RETURNS character varying
AS $$
DECLARE

    --------------------------------------------------------------------------
    -- Description: This is example script using plpgsql ARRAY. It creates 4 tables(voyage,warehouse,driver,vehicle) and fill them with data.
    --------------------------------------------------------------------------

    drivers     character varying[] := ARRAY['Darth Vader', 'Obi Van Kenobi', 'Luke Skywalker'];
    truck_models    character varying[] := ARRAY['Volvo V400', 'Mercedes G550' , 'Scania F440'];
    warehouses character varying[][] := ARRAY[['USA','New York', ' Address 1'],['USA','Los Angeles','Address 2'],['USA','Princeton','Address 3'],['USA','Texas','Address 4']]; -- country, city, address

    rec RECORD;
    s character varying;
    arr character varying[];
   
BEGIN
    --------------------------------------------------------------------------
    -- DATA DEFINITION
    --------------------------------------------------------------------------
   
    -- Delete tables START
    DROP TABLE IF EXISTS voyage;
    DROP TABLE IF EXISTS warehouse;
    DROP TABLE IF EXISTS driver;
    DROP TABLE IF EXISTS vehicle;
    -- Delete tables END

    -- Delete SEQUENCE for table id START
    DROP SEQUENCE IF EXISTS voyage_id_seq;
    DROP SEQUENCE IF EXISTS vehicle_id_seq;
    DROP SEQUENCE IF EXISTS driver_id_seq;
    DROP SEQUENCE IF EXISTS warehouse_id_seq;
    -- Delete SEQUENCE for table id END

    -- Sequencers definition START
    CREATE SEQUENCE voyage_id_seq START 1000;
    CREATE SEQUENCE vehicle_id_seq START 1000;
    CREATE SEQUENCE driver_id_seq START 1000;
    CREATE SEQUENCE warehouse_id_seq START 1000;
    -- Sequencers definition END
   

    -- Tables defenition START
   
    -- Vehicle
    CREATE TABLE vehicle(
            vehicle_id         numeric(10) DEFAULT nextval('vehicle_id_seq') PRIMARY KEY
        ,    truck_model         character varying(255)
    );

    -- Driver
    CREATE TABLE driver(
            driver_id         numeric(10) DEFAULT nextval('driver_id_seq') PRIMARY KEY
        ,    full_name         character varying(255) UNIQUE
    );

    -- Warehouse
    CREATE TABLE warehouse(
            warehouse_id         numeric(10) DEFAULT nextval('warehouse_id_seq') PRIMARY KEY
        ,    country         character varying(255) NOT NULL
        ,    city             character varying(255) NOT NULL
        ,    address            character varying(255) NOT NULL
    );

    -- Voyage
    CREATE TABLE voyage(
   
            voyage_id         numeric(10) DEFAULT nextval('voyage_id_seq') PRIMARY KEY

        ,    driver_id         numeric(10) REFERENCES driver(driver_id)
        ,    vehicle_id         numeric(10) REFERENCES vehicle(vehicle_id)

        ,    from_warehouse_id    numeric(10) REFERENCES warehouse(warehouse_id)
        ,    to_warehouse_id        numeric(10) REFERENCES warehouse(warehouse_id)

        ,    created         timestamp without time zone DEFAULT now()

    );
    -- Tables defenitin END
    --------------------------------------------------------------------------------------
    -- DATA GENERATION
    --------------------------------------------------------------------------------------

    -- "driver" fill
    FOREACH s IN ARRAY drivers LOOP
        INSERT INTO driver(full_name) VALUES(s);
    END LOOP;
   
    -- "vehicle" fill
    FOREACH s IN ARRAY truck_models LOOP
        INSERT INTO vehicle(truck_model) VALUES(s);
    END LOOP;

    -- "warehouse" fill
    FOREACH arr SLICE 1 IN ARRAY warehouses LOOP
        INSERT INTO warehouse(country,city,address) VALUES(arr[1],arr[2],arr[3]);
    END LOOP;

    -- "voyage" fill

    FOR rec IN
        -- query to generate all possible combinations
        SELECT *
        FROM
            driver AS dr
        ,    vehicle AS v
        ,     warehouse AS from_w
        ,    warehouse AS to_w
    LOOP
        INSERT INTO voyage(
                driver_id
            ,    vehicle_id
            ,    from_warehouse_id
            ,    to_warehouse_id)
        VALUES(
                rec.driver_id
            ,    rec.vehicle_id
            ,    rec.warehouse_id
            ,    rec.warehouse_id
        );

    END LOOP;   
       
   

    RETURN 'Hooray. Tables created and filled with data!!!';

END;
$$ LANGUAGE plpgsql;


8. Execute function:

SELECT using_array_example(); 

PostgreSQL: plpgsql: Example of using ARRAY data type (one and two-dimentional) in plsql function - tutorial screenshot 6