<?xml version="1.0" encoding="UTF-8"?>

<dm:page id="buildings"
         xmlns:dm="http://datamixer.org/config"
         xmlns:dmf="http://datamixer.org/config/functions">

  <!-- ====================================================== -->
  <!-- buildings -->

  <!-- list of buildings -->
  <dm:values id="buildings">
    <dmf:forEach>
      <dm:list done="any" name="building">

	<!-- building pk -->
	<dm:ints range="[1]" name="pk"/>

	<!-- building name -->
	<dm:strings name="name">
	  Faculty Building, Bestof Hall, Sunset Towers
	</dm:strings>

	<!-- listeners -->
	<dm:listener listener="csvBuildings" event="next" action="setValueWrite"/>
	<dm:listener listener="xmlBuildings" event="next" action="setValueWrite"/>
      </dm:list>
    </dmf:forEach>
  </dm:values>

  <!-- iterator over list of buildings -->
  <dm:iterator id="buildingsIter" collection="buildings"/>

  <!-- room primary key -->
  <dm:ints range="[1]">
    <dm:iterator id="roomPk" name="room_pk"/>
  </dm:ints>

  <!-- ====================================================== -->
  <!-- offices -->

  <!-- office buildings -->
  <dm:values id="officeBuildings">
    <dmf:forEach begin="1" end="1">
      <dm:iterator reference="buildingsIter"/>
    </dmf:forEach>
  </dm:values>

  <!-- office rooms -->
  <dmf:add id="officeNames">
    <dm:counter>
      <!-- room number -->
      <dm:ints range="[1,10]"/>
      <!--  floor number -->
      <dm:ints range="[100,200]100"/>
    </dm:counter>
  </dmf:add>

  <!-- offices -->
  <dm:values id="offices" scope="application">
    <dmf:forEach>
      <dm:list done="any" name="office">

	<!-- pk -->
	<dm:iterator reference="roomPk"/>

	<!-- room -->
	<dm:counter>
	  <dm:iterator reference="officeNames" name="room_name"/>
	  <dm:iterator collection="officeBuildings"/>
	</dm:counter>

	<!-- listeners -->
	<dm:listener listener="csvRooms" event="next" action="setValueWrite"/>
	<dm:listener listener="xmlRooms" event="next" action="setValueWrite"/>
      </dm:list>
    </dmf:forEach>
  </dm:values>

  <!-- ====================================================== -->
  <!-- classrooms -->

  <!-- classroom buildings -->
  <dm:values id="classroomBuildings">
    <dmf:forEach begin="1" end="2">
      <dm:iterator reference="buildingsIter"/>
    </dmf:forEach>
  </dm:values>

  <dm:values id="classrooms" scope="application">
    <dmf:forEach>
      <dm:list done="any" name="classroom">

	<!-- pk -->
	<dm:iterator reference="roomPk"/>

	<dm:counter>

	  <!-- classrooms -->
	  <dmf:add name="room_name">
	    <dm:counter>
	      <!-- room number -->
	      <dm:ints range="[1,3]"/>
	      <!-- floor number -->
	      <dm:ints range="[100,300]100"/>
	    </dm:counter>
	  </dmf:add>

	  <!-- buildings -->
	  <dm:iterator collection="classroomBuildings"/>

	</dm:counter>

	<!-- listeners -->
	<dm:listener listener="csvRooms" event="next" action="setValueWrite"/>
	<dm:listener listener="xmlRooms" event="next" action="setValueWrite"/>
      </dm:list>
    </dmf:forEach>
  </dm:values>

</dm:page>
