def test(self):
		s = self.session
		dao = SA_Effort_DAO(session = s)

		# Drop/Create tables.
		sa_metadata.metadata.drop_all(s.bind)
		sa_metadata.metadata.create_all(s.bind)
		s.commit()
		
		# Generate test effort set.
		efforts = fishing_util.generate_efforts()

		## Merge generated objects for testing.
		for o_key, o in util_registry.object_registry.items():
			try:
				if not o_key[0] in ['Effort']:
					s.add(o)
			except: pass

		# Test DAO operations.
		tag_filter = {'attr': 'Effort.tag', 'op': '==', 'value': 'a'}
		dao.save_efforts(efforts)
		fetched_efforts = dao.get_efforts(filters=[tag_filter])

		self.failUnless(True)
def main():

	# Get params from command line.
	if len(sys.argv) != 3:
		print >> sys.stderr, "Must provide csv file and id of effort set to be created in db."
		exit(1)
	csv_file = sys.argv[1]
	tag = sys.argv[2]

	# Setup DAOs.
	db_session = sa_session.get_session()
	effort_dao = SA_Effort_DAO(session = db_session)
	cell_dao = SA_Cell_DAO(session = db_session)

	# Get 100km cells and make id lookup.
	cells = cell_dao.get_cells(filters=[{'attr': 'type', 'op': '==', 'value': 'km100'}])
	cells_by_100km_id = {}
	for c in cells: cells_by_100km_id[c.type_id] = c

	# Make gears lookup.
	gears_by_id = {}
	for gear in db_session.query(Gear).all():
		gears_by_id[gear.id] = gear

	# Create efforts from csv rows.
	efforts = []
	csv_reader = csv.DictReader(open(csv_file, "rb"))
	r_counter = 0
	for r in csv_reader:

		r_counter += 1
		if (r_counter % 1000) == 0:
			print >> sys.stderr, r_counter

		# Get cell.
		cell = cells_by_100km_id[int(r['id_100'])]

		# Get gear.
		gear_id = "GC%s" % r['gear_code']
		gear = gears_by_id[gear_id]

		# Create effort.
		efforts.append(Effort(
			cell = cell,
			time = r['year'],
			gear = gear,
			tag = tag,
			swept_area = float(r['A']),
			hours_fished = float(r['hours_fished'])
			))
	
	# Save efforts.
	effort_dao.save_efforts(efforts)