src/AttributeFinder.h
branchv_0
changeset 32 bccda5688d71
parent 29 6f15f18d2abf
--- a/src/AttributeFinder.h	Sat Jan 11 18:13:30 2020 +0100
+++ b/src/AttributeFinder.h	Sat Jan 11 19:10:01 2020 +0100
@@ -43,7 +43,7 @@
 	 * @param writer
 	 * @param field
 	 */
-	virtual void writeFieldOfExistingFile(RelationalWriter* writer, const RequestedField& field) = 0;
+	virtual void writeFieldOfExistingFile(RelationalWriter* writer, const string_t& relationName, const RequestedField& field) = 0;
 
 	/**
 	 * Writes empty attribute(s) in case of non-existent file or an error. 
@@ -51,9 +51,9 @@
 	 * @param writer
 	 * @param field
 	 */
-	virtual void writeEmptyField(RelationalWriter* writer, const RequestedField& field) {
+	virtual void writeEmptyField(RelationalWriter* writer, const string_t& relationName, const RequestedField& field) {
 		// TODO: better handling of null values (when null values are supported by the format specification)
-		for (AttributeMetadata m : toMetadata(writer, field)) {
+		for (AttributeMetadata m : toMetadata(writer, relationName, field)) {
 			switch (m.typeId) {
 				case TypeId::BOOLEAN:
 					writer->writeAttribute(L"false");
@@ -76,10 +76,11 @@
 	 * Single requested fields might generate multiple attributes in the relation.
 	 * But usually it is 1:1.
 	 * @param writer can be used for TypeId coversion from string_t
+	 * @param relationName default one or set by the user
 	 * @param field requested field from the user (usually from CLI arguments)
 	 * @return attribute metadata to be used in the RelationalWriter.startRelation()
 	 */
-	virtual vector<AttributeMetadata> toMetadata(RelationalWriter* writer, const RequestedField& field) = 0;
+	virtual vector<AttributeMetadata> toMetadata(RelationalWriter* writer, const string_t& relationName, const RequestedField& field) = 0;
 
 	/**
 	 * Writing of the record for current file is starting.
@@ -93,9 +94,9 @@
 		currentFileExists = exists;
 	}
 
-	virtual void writeField(RelationalWriter* writer, const RequestedField& field) {
-		if (currentFileExists) writeFieldOfExistingFile(writer, field);
-		else writeEmptyField(writer, field);
+	virtual void writeField(RelationalWriter* writer, const string_t& relationName, const RequestedField& field) {
+		if (currentFileExists) writeFieldOfExistingFile(writer, relationName, field);
+		else writeEmptyField(writer, relationName, field);
 	}
 
 	/**