#include "fd.hh"
#include <sstream>

const std::string FunctionalDependency::RIGHTARROW("->"); //seperator

FunctionalDependency::FunctionalDependency(const AttributeSet& left, const AttributeSet& right) :
	theLeftSide(left), theRightSide(right){}

FunctionalDependency::FunctionalDependency(const std::string& fdString)
{
	std::string::size_type seperator = fdString.find(RIGHTARROW, 0);
	theLeftSide.setFromText(fdString.substr(0, seperator));
	theRightSide.setFromText(fdString.substr(seperator+RIGHTARROW.length()));
}

bool FunctionalDependency::operator <(const FunctionalDependency& that) const
{
	return getText()<that.getText(); //hack
}

FunctionalDependency::~FunctionalDependency(){}

std::string FunctionalDependency::getText() const
{
	std::stringstream result;
	result<<theLeftSide.getText()<<RIGHTARROW<<theRightSide.getText();
	return result.str();
}

AttributeSet FunctionalDependency::getLeftSide() const
{
	return theLeftSide;
}

AttributeSet FunctionalDependency::getRightSide() const
{
	return theRightSide;
}
