
#pragma once

#include "TopoEntity.h"
#include "nlohmann/json.hpp"
#include "group.h"
#include "BoundaryGroup.h"


using json = nlohmann::json;

class DomainGroup : public Group
{
public:
	DomainGroup(json, std::vector<std::shared_ptr<TopoEntity>>);
	DomainGroup();

	json getJson();
	void setBoundary(std::shared_ptr<BoundaryGroup>);
	void clearBoundaries();
	std::vector<std::shared_ptr<BoundaryGroup>> getBoundaries();
	void setInGroup(std::string g);

private:
	std::vector<std::shared_ptr<BoundaryGroup>> boundaries;

	std::string in_group; //domain groups can be grouped in larger groups (TO DO Resolve naming issues, too many "groups")
};

typedef std::shared_ptr<DomainGroup> DomainGroup_;