Example #1
0
	def run(self):
		# Get configurations
		configFile = sys.path[0] + os.sep + 'POIServer.conf'
		config = Configuration(configFile)
		if not os.path.exists(configFile):
			config.DSN = 'username/password@database_sid'
			config.TSFormat = '%Y-%m-%d %H:%M:%S'
			config.Port = 22010
		# Prepare host and port of server
		(host, port) = ('', int(config.Port))
		print 'Starting TCP socket server...'
		# Initialize threaded tcp server
		server = ThreadedTCPServer((host, port), ThreadedTCPRequestHandler)
		# Get the established server ip and port
		(serverIP, serverPort) = server.server_address
		print 'Binded at %s:%s' % (serverIP, serverPort)
		# Start threading server
		print 'Start listening...'
		try:
			thread.start_new_thread(server.serve_forever())
		except (SystemExit, KeyboardInterrupt):
			print 'Shutting down server...'
			server.shutdown()
Example #2
0
	def __init__(self):
		'''Constructor'''
		# Initialize option parser
		self.optionParser = OptionParser(
				version = '%prog v1.0 beta 20101105 by Nystearia'
		)
		#self.optionParser.add_option('-H', '--help', action = 'help')
		#self.optionParser.add_option('-V', '--version', action = 'version')
		self.optionParser.add_option(
				'-f',
				'--file',
				dest = 'file',
				metavar = 'FILE',
				help = 'Datafile to be imported'
		)
		self.optionParser.add_option(
				'-a',
				'--filetype',
				dest = 'filetype',
				metavar = 'FILETYPE',
				help = 'File type (csv or dbf), if not specified, program \
will detect it automatically.'
		)
		self.optionParser.add_option(
				'-t',
				'--table',
				dest = 'table',
				metavar = 'TABLE',
				help = 'Table name to be imported to'
		)
		self.optionParser.add_option(
				'-c',
				'--columns',
				dest = 'columns',
				metavar = 'COLUMNS',
				help = 'Columns in the source datafile, separated by commas'
		)
		self.optionParser.add_option(
				'-e',
				'--exclusions',
				dest = 'exclusions',
				metavar = 'EXCLUSIONS',
				help = 'Columns excluded from the target table when COLUMNS \
is null(Import to all columns)'
		)
		self.optionParser.add_option(
				'-u',
				'--uniques',
				dest = 'uniques',
				metavar = 'UNIQUES',
				help = 'Columns in the source datafile which needed to check \
unique'
		)
		self.optionParser.add_option(
				'-s',
				'--timestamp',
				dest = 'timestamp',
				metavar = 'TIMESTAMP',
				help = 'Column storing import timestamp'
		)
		self.optionParser.add_option(
				'-d',
				'--definition',
				dest = 'definition',
				metavar = 'DEFINITION',
				help = 'Definition file defines the TABLE, COLUMNS, and \
UNIQUES'
		)
		self.optionParser.add_option(
				'-o',
				'--overwrite',
				dest = 'overwrite',
				action = 'store_true',
				default = False,
				help = 'If UNIQUES and this option is set, when UNIQUES \
conficts, overwrite the record with the data file provided'
		)
		self.optionParser.add_option(
				'-x',
				'--clear',
				dest = 'cleardata',
				action = 'store_true',
				help = 'Clear data first'
		)
		self.optionParser.add_option(
				'-l',
				'--log',
				dest = 'log',
				action = 'store_true',
				help = 'Import with logging'
		)
		self.optionParser.add_option(
				'-i',
				'--interface',
				dest = 'interface',
				action = 'store_true',
				help = 'Interface mode (No standard output)'
		)
		self.optionParser.add_option(
				'-v',
				'--verbose',
				dest = 'verbose',
				action = 'store_true',
				help = 'Verbose'
		)
		(self.options, self.args) = self.optionParser.parse_args()
		# Initialize messenger
		self.messenger = Messenger(
				sys.path[0] + os.sep \
				+ os.path.basename(sys.argv[0]).split('.', 1)[0] + '.log',
				self.options.log,
				self.options.interface
		)
		# Initialize configuration
		config = Configuration(sys.path[0] + os.sep + 'PyOraImporter.conf')
		self.dsn = config.DSN
		self.TSFormat = config.TSFormat
		if self.dsn is None:
			self.messenger.Send(
					'Error: Database configuration file (PyOraImporter.conf) \
not exists and be created, please modify it to the correct setting',
					'Error'
			)
			config.DSN = 'username/password@database_sid'
			config.TSFormat = '%Y-%m-%d %H:%M:%S'
			exit()
Example #3
0
    def parse(self, data):
        """Parse socket data"""
        try:
            self.messenger.Send("Received command from client: %s" % data, "Server")
            (
                file,
                filetype,
                table,
                columns,
                exclusions,
                uniques,
                timestamp,
                overwrite,
                cleardata,
                userid,
                username,
            ) = data.split("#")
            if columns == "":
                columns = []
            else:
                columns = columns.split(",")
            if exclusions == "":
                exclusions = []
            else:
                exclusions = exclusions.split(",")
            if uniques == "":
                uniques = []
            else:
                uniques = uniques.split(",")
            overwrite = overwrite == "1"
            cleardata = cleardata == "1"
        except:
            self.messenger.Send("Error: Invalid data from client", "Error")
            return False
            # Initialize database connection
        config = Configuration(sys.path[0] + os.sep + "POIServer.conf")
        dsn = config.DSN
        TSFormat = config.TSFormat
        if dsn is None:
            self.messenger.Send(
                "Error: Database configuration file (POIServer.conf) \
not exists and be created, please modify it to the correct setting",
                "Error",
            )
            config.DSN = "username/password@database_sid"
            config.TSFormat = "%Y-%m-%d %H:%M:%S"
            config.Port = 22010
            return False
            # Initialize importer
        importer = Importer(
            self.messenger,
            dsn,
            TSFormat,
            file,
            filetype,
            table,
            columns,
            exclusions,
            uniques,
            timestamp,
            overwrite,
            cleardata,
        )
        # Initialize logger
        logger = Logger(dsn)
        # Start importing
        if importer.Begin():
            logger.Log(file, importer.importCount, "0", table, userid, username)
            self.messenger.Send("All done", "Server")
        else:
            logger.Log(file, importer.importCount, "1", table, userid, username)
            self.messenger.Send("Import failed", "Server")
Example #4
0
            self.messenger.Send("All done", "Server")
        else:
            logger.Log(file, importer.importCount, "1", table, userid, username)
            self.messenger.Send("Import failed", "Server")


# *****************************************************************************
#  MAIN PROGRAM ENTRY
# *****************************************************************************

if __name__ == "__main__":
    # Get configurations
    configFile = sys.path[0] + os.sep + "POIServer.conf"
    config = Configuration(configFile)
    if not os.path.exists(configFile):
        config.DSN = "username/password@database_sid"
        config.TSFormat = "%Y-%m-%d %H:%M:%S"
        config.Port = 22010
        # Prepare host and port of server
    (host, port) = ("", int(config.Port))
    print "Starting TCP socket server..."
    # Initialize threaded tcp server
    server = ThreadedTCPServer((host, port), ThreadedTCPRequestHandler)
    # Get the established server ip and port
    (serverIP, serverPort) = server.server_address
    print "Binded at %s:%s" % (serverIP, serverPort)
    # Start threading server
    print "Start listening..."
    try:
        thread.start_new_thread(server.serve_forever())
    except (SystemExit, KeyboardInterrupt):