<?xml version="1.0" encoding="UTF8"?>
<!DOCTYPE entity [
	<!ENTITY % xhtml-special PUBLIC "-//W3C//ENTITIES Special for XHTML//EN" "http://www.w3.org/MarkUp/DTD/xhtml-special.ent" > %xhtml-special;
	<!ENTITY % xhtml-symbol PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN" "http://www.w3.org/MarkUp/DTD/xhtml-symbol.ent" > %xhtml-symbol;
	<!ENTITY % xhtml-lat1 PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "http://www.w3.org/MarkUp/DTD/xhtml-lat1.ent" > %xhtml-lat1;
]>
<ENGINE_MODEL xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" currentview="Diagram1" xmlrevision="53">
  <META_INFO createdby="tomcat" createdon="15-Oct-2018 15:43" modifiedby="johndoe" modifiedon="15-Oct-2018 16:58" generatedby="Livebase designer" generatedon="Windows 10" uac="CUSTOMER"/>
  <UFP min="148.0" ufp="159.0" max="167.0"/>
  <DATABASE_SCHEMA>
    <CLASS name="Employee" objecttitle="title">
      <CLASS_ROLE name="Employee"/>
      <STRING_ATTRIBUTE name="first_name" allownull="FALSE" casemode="0" innerspacemode="0" minlength="0" maxlength="255"/>
      <STRING_ATTRIBUTE name="last_name" allownull="FALSE" casemode="0" innerspacemode="0" minlength="0" maxlength="255"/>
      <DATE_ATTRIBUTE name="date_of_birth" allownull="FALSE"/>
      <STRING_ATTRIBUTE name="phone_number" casemode="0" innerspacemode="0" minlength="0" maxlength="20"/>
      <STRING_ATTRIBUTE name="email_address" casemode="0" innerspacemode="0" minlength="0" maxlength="255">
        <ADVANCED_PATTERN pattern="[^@]+@[^@]+\.[^@]+"/>
      </STRING_ATTRIBUTE>
      <STRING_ATTRIBUTE name="position" casemode="0" innerspacemode="0" minlength="0" maxlength="255">
        <CONSTANT_VALUE value="Software Developer" matchcase="TRUE"/>
        <CONSTANT_VALUE value="Project Manager" matchcase="TRUE"/>
        <CONSTANT_VALUE value="Security Specialist" matchcase="TRUE"/>
        <CONSTANT_VALUE value="System Admin" matchcase="TRUE"/>
        <CONSTANT_VALUE value="Designer" matchcase="TRUE"/>
        <CONSTANT_VALUE value="Salesperson" matchcase="TRUE"/>
      </STRING_ATTRIBUTE>
      <DATE_ATTRIBUTE name="date_joined"/>
      <STRING_ATTRIBUTE name="team" casemode="0" innerspacemode="0" minlength="0" maxlength="255"/>
      <REAL_ATTRIBUTE name="hourly_cost" decimaldigits="2"/>
      <MATH_EXPRESSION name="title">
        <![CDATA[ concat(first_name," ",last_name) ]]>
      </MATH_EXPRESSION>
      <MATH_EXPRESSION name="age">
        <![CDATA[ dateDiff(__System.date, date_of_birth, field.year) ]]>
      </MATH_EXPRESSION>
      <MATH_EXPRESSION name="junior">
        <![CDATA[ age < 25 && dateDiff(__System.date, date_joined, field.month) < 12 ]]>
      </MATH_EXPRESSION>
      <UNIQUE_CONSTRAINT>
        <UNIQUE_CONSTRAINT_PART target="last_name"/>
        <UNIQUE_CONSTRAINT_PART target="first_name"/>
        <UNIQUE_CONSTRAINT_PART target="date_of_birth"/>
      </UNIQUE_CONSTRAINT>
    </CLASS>
    <SYSTEM_COMPOSITION class="Employee" cardinality="0,N"/>
  </DATABASE_SCHEMA>
  <DIAGRAM_SCHEMA name="Diagram1" zoom="1.0">
    <CLASS_VIEW class="Employee" x="183.0" y="126.0"/>
  </DIAGRAM_SCHEMA>
  <APPLICATION_SCHEMA name="Application" defaultpolicyfornewentities="enable">
    <OPERATIONS>
      <CLASS_OPERATIONS class="Employee">
        <ENABLE>
          <CLASS_ROLE role="Employee"/>
          <ATTRIBUTE attribute="first_name"/>
          <ATTRIBUTE attribute="last_name"/>
          <ATTRIBUTE attribute="date_of_birth"/>
          <ATTRIBUTE attribute="phone_number"/>
          <ATTRIBUTE attribute="email_address"/>
          <ATTRIBUTE attribute="position"/>
          <ATTRIBUTE attribute="date_joined"/>
          <ATTRIBUTE attribute="team"/>
          <ATTRIBUTE attribute="hourly_cost"/>
          <ATTRIBUTE attribute="title"/>
          <ATTRIBUTE attribute="age"/>
          <ATTRIBUTE attribute="junior"/>
        </ENABLE>
      </CLASS_OPERATIONS>
    </OPERATIONS>
    <DEFAULTS>
      <CLASS_DEFAULTS class="Employee">
        <ATTRIBUTE_EXPRESSION attribute="email_address" initializeoncreate="TRUE" updateoncreate="FALSE" resetonedit="FALSE" updateonedit="FALSE" warnonsave="FALSE">
          <![CDATA[ concat(lowerCase(first_name),".",lowerCase(last_name),"@thesfor.com") ]]>
        </ATTRIBUTE_EXPRESSION>
        <ATTRIBUTE_VALUE attribute="team">Thesfor</ATTRIBUTE_VALUE>
      </CLASS_DEFAULTS>
    </DEFAULTS>
    <LAYOUTS>
      <MENUBAR_LAYOUT>
        <COMMAND_OPEN_CLASS class="Employee" name="$Class11" openautomatically="FALSE"/>
      </MENUBAR_LAYOUT>
      <CLASS_LAYOUT class="Employee">
        <FORM_LAYOUT>
          <MAIN_SECTION name="Main_page1">
            <STRING_EDITOR attribute="first_name"/>
            <STRING_EDITOR attribute="last_name"/>
            <SEPARATOR name="separator1"/>
            <DATE_EDITOR attribute="date_of_birth">
              <COMPONENT_PROPERTY property="attributeEditor.width">10</COMPONENT_PROPERTY>
            </DATE_EDITOR>
            <PAGED_SECTION name="Contact">
              <STRING_EDITOR attribute="phone_number"/>
              <STRING_EDITOR attribute="email_address"/>
            </PAGED_SECTION>
            <PAGED_SECTION name="Job">
              <DATE_EDITOR attribute="date_joined">
                <COMPONENT_PROPERTY property="attributeEditor.width">10</COMPONENT_PROPERTY>
              </DATE_EDITOR>
              <STRING_EDITOR attribute="position"/>
              <STRING_EDITOR attribute="team"/>
              <REAL_EDITOR attribute="hourly_cost">
                <COMPONENT_PROPERTY property="attributeEditor.width">10</COMPONENT_PROPERTY>
              </REAL_EDITOR>
            </PAGED_SECTION>
          </MAIN_SECTION>
          <ENABLING_CONDITIONS/>
        </FORM_LAYOUT>
      </CLASS_LAYOUT>
    </LAYOUTS>
    <WARNINGS>
      <CLASS_WARNINGS class="Employee">
        <EXPRESSION name="joinedInFuture" blocking="TRUE" evaluateon="nm" evaluateonnull="TRUE">
          <![CDATA[ date_joined > __System.date ]]>
        </EXPRESSION>
        <EXPRESSION name="under20" blocking="TRUE" evaluateon="nm" evaluateonnull="TRUE">
          <![CDATA[ age < 20	 ]]>
        </EXPRESSION>
        <EXPRESSION name="lowCost" blocking="FALSE" evaluateon="nm" evaluateonnull="TRUE">
          <![CDATA[ hourly_cost < (25 + dateDiff(__System.date, date_joined, field.year) * 10) ]]>
        </EXPRESSION>
      </CLASS_WARNINGS>
    </WARNINGS>
  </APPLICATION_SCHEMA>
  <PROFILE_SCHEMA defaultoptions="" defaultgrantsonapplication="-" public="TRUE">
    <DESCRIPTION>
      <![CDATA[ Right-click on the members to add an application.
WARNING: applications added to the guest members will be accessible by anyone without authentication. ]]>
    </DESCRIPTION>
  </PROFILE_SCHEMA>
  <PROFILE_SCHEMA name="Member" defaultoptions="ar" defaultgrantsonapplication="vced" canedithomepage="FALSE" caneditapplicationcss="FALSE" caneditpasswordpolicy="FALSE" defaultprofile="TRUE">
    <APPLICATION_GRANTS application="Application" grantsonclasses="vced" grantsonattributes="ve" grantsonassociations="ve" grantsoncompositions="vced">
      <CLASS_GRANTS class="Employee" grants="vced">
        <ELEMENT_GRANTS target="first_name" grants="ve"/>
        <ELEMENT_GRANTS target="last_name" grants="ve"/>
        <ELEMENT_GRANTS target="date_of_birth" grants="ve"/>
        <ELEMENT_GRANTS target="phone_number" grants="ve"/>
        <ELEMENT_GRANTS target="email_address" grants="ve"/>
        <ELEMENT_GRANTS target="position" grants="ve"/>
        <ELEMENT_GRANTS target="date_joined" grants="ve"/>
        <ELEMENT_GRANTS target="team" grants="ve"/>
        <ELEMENT_GRANTS target="hourly_cost" grants="ve"/>
        <ELEMENT_GRANTS target="title" grants="v"/>
        <ELEMENT_GRANTS target="age" grants="v"/>
        <ELEMENT_GRANTS target="junior" grants="v"/>
      </CLASS_GRANTS>
    </APPLICATION_GRANTS>
  </PROFILE_SCHEMA>
  <LOCALIZATION_SCHEMA language="en">
    <CLASS_LOCALIZATION class="Employee"/>
    <APPLICATION_LOCALIZATION application="Application">
      <CLASS_MESSAGES class="Employee">
        <WARNING_LOCALIZATION name="joinedInFuture">Invalid assumption date.</WARNING_LOCALIZATION>
        <WARNING_LOCALIZATION name="under20">Employee&apos;s age is under 20!</WARNING_LOCALIZATION>
        <WARNING_LOCALIZATION name="lowCost">Hourly cost is too low with respect to the employee&apos;s experience.</WARNING_LOCALIZATION>
      </CLASS_MESSAGES>
      <MENU_LOCALIZATION menu="$Class11"/>
      <FORM_LOCALIZATION class="Employee"/>
    </APPLICATION_LOCALIZATION>
  </LOCALIZATION_SCHEMA>
</ENGINE_MODEL>
