import sys

import os

import getopt

import pipes

from optparse import OptionParser

import grass.script as grass


def main():


        parser = OptionParser()

        parser.add_option("-i", "--input", dest="input")
        parser.add_option("-o", "--output", dest="output")

	(options, args) = parser.parse_args()

        inputs = options.input
        inputs = inputs.replace('=', '')

        outputs = options.output
        outputs = outputs.replace('=', '')

        outputs_pl = outputs + '_pl' 

        print inputs
        print outputs
        print outputs_pl
        print "test"

        #python "C:\python25\test03.py" "--input=streams" "--output=streams_cp"


        grass.parse_command('g.remove', vect = 'streams_cp')

        grass.parse_command('g.remove', vect = 'streams_pl')

        grass.parse_command('g.remove', vect = 'streams_nocat')

        grass.parse_command('g.copy', vect = 'streams,streams_cp')

        grass.parse_command('g.remove', vect = 'streams_length')

        #Wyswietlic informacje o skopiowanych danych :

        items = grass.parse_command('db.describe', table = 'streams_cp')
	for item in items:
        	print item

        items = grass.parse_command('v.info', map = 'streams_cp')
	for item in items:
        	print item


        #Zapisac odczytane informacje do sprawozdania.


        #Wykonac operacje utworzenia polilinii na zbiorze streams_cp, wynik zapisac w pliku streams_pl:


        grass.parse_command('v.build.polylines', input = 'streams_cp', output = 'streams_pl')

        #grass.parse_command('d.vect', streams_pl, col = 'red')


        #Usunac z tabeli streams_pl atrybut kategorii, zapisac w tabeli streams_nocat. Odczytac wynikowe dane z tabeli streams_nocat poleceniem v.category z ustawiona opcja report

        grass.parse_command('v.category', input = 'streams_pl' , option = 'del', out = 'streams_nocat')

        grass.parse_command('v.category', input = 'streams_nocat' , option = 'report')

        #(Drugie polecenie nie powinno wyswietlic danych)

        #Dodac wartosc kategorii dla poszczegolnych obiektow (linii), zaczynajac numerowanie od wartosci 1, z krokiem 1, wynik zapisac do pliku streams_lenght:

        grass.parse_command('v.category', input = 'streams_nocat', option = 'add', step = '1', cat = '1', out = 'streams_length')

        grass.parse_command('v.category', input = 'streams_length', option = 'report')


        grass.parse_command('v.to.db', flags = 'p', map = 'streams_length', option = 'length', units = 'k', col = 'cat')


        #Ustalic polaczenie z katalogiem plikow dbf, wyswietlic dostepne tabele:

        grass.parse_command('db.connect', driver = 'dbf', database='$GISDBASE/$LOCATION_NAME/$MAPSET/dbf/')

        items = grass.parse_command('db.tables', flags='p')
	for item in items:
        	print item


        #Utworzyc tabele streams_length, odczytac informacje o utworzonej tabeli:

        #echo "create table streams_length (cat int, length double)" | db.execute

        #grass.parse_command('db.execute', input = 'create table streams_length (cat int, length double)')                            

        #grass.run_command('db.select', 'create table streams_length (cat int, length double)')                            

        t=pipes.Template()

        f=t.open('tmp', 'w')

        f.write('create table streams_length (cat int, length double)')

        f.close()

        grass.parse_command('db.execute', input = 'tmp')                            

        items = grass.parse_command('db.describe', flags = 'c', table = 'streams_length')
	for item in items:
        	print item

        grass.parse_command('v.db.connect', flags = 'o', map = 'streams_length',  table = 'streams_length')

        #v.db.connect -p streams_length

        #Dotychczas dane wektorowe byly przechowywane w sekcji wektorowej, teraz zostana przepisane do tabeli streams_length:

        grass.parse_command('v.to.db', map = 'streams_length', option = 'cat', col = 'cat')
                            
        grass.parse_command('v.to.db', map = 'streams_length', option = 'length', col = 'length')

        #Wyswieltic wynikowy plik poleceniem:

        #grass.parse_commandd.vect streams_length display=shape col=blue
                            
        #cp map.png a.png


        	
main()
