home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************
- * .FILE: contrctr.cpv *
- * *
- * .DESCRIPTION: Implementation of additional member functions for the class *
- * OAContractor *
- * *
- * .CLASSES: *
- * *
- * .COPYRIGHT: *
- * Licensed Material - Program-Property of IBM *
- * (C) Copyright IBM Corp. 1992, 1995, 1996 - All Rights Reserved *
- * *
- * .DISCLAIMER: *
- * The following [enclosed] code is sample code created by IBM *
- * Corporation. This sample code is not part of any standard IBM product *
- * and is provided to you solely for the purpose of assisting you in the *
- * development of your applications. The code is provided 'AS IS', *
- * without warranty of any kind. IBM shall not be liable for any damages *
- * arising out of your use of the sample code, even if they have been *
- * advised of the possibility of such damages. *
- * *
- * .NOTE: WE RECOMMEND USING A FIXED SPACE FONT TO LOOK AT THE SOURCE *
- * *
- ******************************************************************************/
- // Default Part Code Generation begins here...
- INotificationId OAContractor::contractorIDId = "OAContractor::contractorID";
- INotificationId OAContractor::lastNameId = "OAContractor::lastName";
- INotificationId OAContractor::firstNameId = "OAContractor::firstName";
- INotificationId OAContractor::middleInitialId = "OAContractor::middleInitial";
- INotificationId OAContractor::homeStreetId = "OAContractor::homeStreet";
- INotificationId OAContractor::homeCityId = "OAContractor::homeCity";
- INotificationId OAContractor::homeStateId = "OAContractor::homeState";
- INotificationId OAContractor::homeZipId = "OAContractor::homeZip";
- INotificationId OAContractor::phoneNumberId = "OAContractor::phoneNumber";
- INotificationId OAContractor::startDateId = "OAContractor::startDate";
- INotificationId OAContractor::endDateId = "OAContractor::endDate";
- INotificationId OAContractor::activeStatusId = "OAContractor::activeStatus";
- INotificationId OAContractor::currentContractId = "OAContractor::currentContract";
- INotificationId OAContractor::IDvalidId = "OAContractor::IDvalid";
-
- // Added after OS2 GA
- INotificationId OAContractor::qryFoundId = "OAContractor::qryFound";
-
- IString OAContractor::contractorID() const
- {
- return iContractorID;
- }
-
- OAContractor & OAContractor::setContractorID()
- {
- IString tempString = iFirstName+iMiddleInitial+iLastName;
- if (iContractorID != tempString)
- {
- iContractorID = tempString;
- notifyObservers(INotificationEvent(OAContractor::contractorIDId, *this));
-
- // Test for string with nontrivial content; needed for clear() call
- if (iContractorID.length() > 5)
- enableIDvalid(true);
-
- } // endif
-
- return *this;
- }
-
- IString OAContractor::lastName() const
- {
- return iLastName;
- }
-
- OAContractor & OAContractor::setLastName(const IString & aLastName)
- {
- if (iLastName != aLastName)
- {
- iLastName = aLastName;
- notifyObservers(INotificationEvent(OAContractor::lastNameId, *this));
- enableIDvalid(false);
-
- } // endif
- return *this;
- }
-
- IString OAContractor::firstName() const
- {
- return iFirstName;
- }
-
- OAContractor & OAContractor::setFirstName(const IString & aFirstName)
- {
- if (iFirstName != aFirstName)
- {
- iFirstName = aFirstName;
- notifyObservers(INotificationEvent(OAContractor::firstNameId, *this));
- enableIDvalid(false);
-
- } // endif
- return *this;
- }
-
- IString OAContractor::middleInitial() const
- {
- return iMiddleInitial;
- }
-
- OAContractor & OAContractor::setMiddleInitial(const IString & aMiddleInitial)
- {
- if (iMiddleInitial != aMiddleInitial)
- {
- iMiddleInitial = aMiddleInitial;
- notifyObservers(INotificationEvent(OAContractor::middleInitialId, *this));
- enableIDvalid(false);
-
- } // endif
-
- return *this;
- }
-
- IString OAContractor::homeStreet() const
- {
- return iHomeStreet;
- }
-
- OAContractor & OAContractor::setHomeStreet(const IString & aHomeStreet)
- {
- if (iHomeStreet != aHomeStreet)
- {
- iHomeStreet = aHomeStreet;
- notifyObservers(INotificationEvent(OAContractor::homeStreetId, *this));
- } // endif
- return *this;
- }
-
- IString OAContractor::homeCity() const
- {
- return iHomeCity;
- }
-
- OAContractor & OAContractor::setHomeCity(const IString & aHomeCity)
- {
- if (iHomeCity != aHomeCity)
- {
- iHomeCity = aHomeCity;
- notifyObservers(INotificationEvent(OAContractor::homeCityId, *this));
- } // endif
- return *this;
- }
-
- IString OAContractor::homeState() const
- {
- return iHomeState;
- }
-
- OAContractor & OAContractor::setHomeState(const IString & aHomeState)
- {
- if (iHomeState != aHomeState)
- {
- iHomeState = aHomeState;
- notifyObservers(INotificationEvent(OAContractor::homeStateId, *this));
- } // endif
- return *this;
- }
-
- IString OAContractor::homeZip() const
- {
- return iHomeZip;
- }
-
- OAContractor & OAContractor::setHomeZip(const IString & aHomeZip)
- {
- if (iHomeZip != aHomeZip)
- {
- iHomeZip = aHomeZip;
- notifyObservers(INotificationEvent(OAContractor::homeZipId, *this));
- } // endif
- return *this;
- }
-
- IString OAContractor::phoneNumber() const
- {
- return iPhoneNumber;
- }
-
- OAContractor & OAContractor::setPhoneNumber(const IString & aPhoneNumber)
- {
- if (iPhoneNumber != aPhoneNumber)
- {
- iPhoneNumber = aPhoneNumber;
- notifyObservers(INotificationEvent(OAContractor::phoneNumberId, *this));
- } // endif
- return *this;
- }
-
- IString OAContractor::startDate() const
- {
- return iStartDate;
- }
-
- OAContractor & OAContractor::setStartDate(const IString & aStartDate)
- {
- if (iStartDate != aStartDate)
- {
- iStartDate = aStartDate;
- notifyObservers(INotificationEvent(OAContractor::startDateId, *this));
- } // endif
- return *this;
- }
-
- IString OAContractor::endDate() const
- {
- return iEndDate;
- }
-
- OAContractor & OAContractor::setEndDate(const IString & aEndDate)
- {
- if (iEndDate != aEndDate)
- {
- iEndDate = aEndDate;
- notifyObservers(INotificationEvent(OAContractor::endDateId, *this));
- } // endif
- return *this;
- }
-
- Boolean OAContractor::isActiveStatus() const
- {
- return iActiveStatus;
- }
-
- OAContractor & OAContractor::enableActiveStatus(const Boolean enable)
- {
- if (iActiveStatus != enable)
- {
- iActiveStatus = enable;
- notifyObservers(INotificationEvent(OAContractor::activeStatusId, *this));
- } // endif
- return *this;
- }
-
- // Start boolean string enabler
-
- OAContractor & OAContractor::enableActiveStatus(const IString & status)
- {
- Boolean tempBoolean = iActiveStatus;
- if (status == "yes") iActiveStatus = true;
- if (status == "no") iActiveStatus = false;
- if (tempBoolean != iActiveStatus)
- {
- notifyObservers(INotificationEvent(OAContractor::activeStatusId, *this));
- }
-
- return *this;
- }
-
- // End boolean string enabler
-
- IString OAContractor::currentContract() const
- {
- return iCurrentContract;
- }
-
- OAContractor & OAContractor::setCurrentContract(const IString & aCurrentContract)
- {
- if (iCurrentContract != aCurrentContract)
- {
- iCurrentContract = aCurrentContract;
- notifyObservers(INotificationEvent(OAContractor::currentContractId, *this));
- } // endif
- return *this;
- }
-
- // Default Part Code Generation ends here.
-
- OAContractor & OAContractor::getContractor()
- {
-
- // Start data access code
-
- IProfile *p = new IProfile("contrctr.ini");
-
- // Needed for Windows implementation
-
- primeData(*p);
-
- // Refresh the value of contractor ID if not already done
-
- if (!isIDvalid())
- setContractorID();
-
- // Check for this contractor ID in the profile collection
-
- if (!p->containsKeyName("contractorID", iContractorID))
- {
- delete p;
- throw IException("A record was not found for this contractor.");
- return *this;
- }
-
- // If other data exists for this contractor,
- // set the corresponding contractor attributes
-
- if (p->containsKeyName("lastName", iContractorID))
- setLastName(p->elementWithKey("lastName", iContractorID));
- if (p->containsKeyName("firstName", iContractorID))
- setFirstName(p->elementWithKey("firstName", iContractorID));
- if (p->containsKeyName("middleInitial", iContractorID))
- setMiddleInitial(p->elementWithKey("middleInitial", iContractorID));
- if (p->containsKeyName("homeStreet", iContractorID))
- setHomeStreet(p->elementWithKey("homeStreet", iContractorID));
- if (p->containsKeyName("homeCity", iContractorID))
- setHomeCity(p->elementWithKey("homeCity", iContractorID));
- if (p->containsKeyName("homeState", iContractorID))
- setHomeState(p->elementWithKey("homeState", iContractorID));
- if (p->containsKeyName("homeZip", iContractorID))
- setHomeZip(p->elementWithKey("homeZip", iContractorID));
- if (p->containsKeyName("phoneNumber", iContractorID))
- setPhoneNumber(p->elementWithKey("phoneNumber", iContractorID));
- if (p->containsKeyName("startDate", iContractorID))
- setStartDate(p->elementWithKey("startDate", iContractorID));
- if (p->containsKeyName("endDate", iContractorID))
- setEndDate(p->elementWithKey("endDate", iContractorID));
- if (p->containsKeyName("currentContract", iContractorID))
- setCurrentContract(p->elementWithKey("currentContract", iContractorID));
-
- // Call overloaded set member function using string parameter
-
- if (p->containsKeyName("activeStatus", iContractorID))
- enableActiveStatus(p->elementWithKey("activeStatus", iContractorID));
-
- delete p;
-
- // End data access code
-
- // Execute event to trigger instantiation of OAContractorView
- notifyObservers(INotificationEvent(qryFoundId, *this));
-
- return *this;
- }
-
- OAContractor & OAContractor::putContractor()
- {
-
- // Start data entry code
-
- IProfile *p = new IProfile("contrctr.ini");
-
- // Needed for Windows implementation
-
- primeData(*p);
-
- // Refresh the value of contractor ID if not already done
-
- if (!isIDvalid())
- setContractorID();
-
- p->addOrReplaceElementWithKey("contractorID", contractorID(), iContractorID);
-
- // If other data about this contractor exists, update it in the database
-
- if (iLastName.length()>0)
- p->addOrReplaceElementWithKey("lastName", lastName(), iContractorID);
- if (iFirstName.length()>0)
- p->addOrReplaceElementWithKey("firstName", firstName(), iContractorID);
- if (iMiddleInitial.length()>0)
- p->addOrReplaceElementWithKey("middleInitial", middleInitial(), iContractorID);
- if (iHomeStreet.length()>0)
- p->addOrReplaceElementWithKey("homeStreet", homeStreet(), iContractorID);
- if (iHomeCity.length()>0)
- p->addOrReplaceElementWithKey("homeCity", homeCity(), iContractorID);
- if (iHomeState.length()>0)
- p->addOrReplaceElementWithKey("homeState", homeState(), iContractorID);
- if (iHomeZip.length()>0)
- p->addOrReplaceElementWithKey("homeZip", homeZip(), iContractorID);
- if (iPhoneNumber.length()>0)
- p->addOrReplaceElementWithKey("phoneNumber", phoneNumber(), iContractorID);
- if (iStartDate.length()>0)
- p->addOrReplaceElementWithKey("startDate", startDate(), iContractorID);
- if (iEndDate.length()>0)
- p->addOrReplaceElementWithKey("endDate", endDate(), iContractorID);
- if (iCurrentContract.length()>0)
- p->addOrReplaceElementWithKey("currentContract", currentContract(), iContractorID);
- if (isActiveStatus())
- {
- p->addOrReplaceElementWithKey("activeStatus", "yes", iContractorID);
- }
- else
- {
- p->addOrReplaceElementWithKey("activeStatus", "no", iContractorID);
- }
-
- delete p;
-
- // End data entry code
-
- return *this;
- }
-
- OAContractor & OAContractor::parseName(const IString & aName)
- {
-
- // aName is supplied by user in OAQueryContractor
-
- // Test for missing information in newly entered name
-
- if (aName.numWords()!= 3)
- {
- enableIDvalid(false);
- throw IException("The name you entered is incomplete. Enter first name, middle initial, and last name.");
- return *this;
- }
-
- // Set name attributes and derive contractorID attribute
-
- clear();
- setFirstName(aName.word(1));
- setMiddleInitial(aName.word(2));
- setLastName(aName.word(3));
- setContractorID();
-
- // End added code
-
- return *this;
- }
- OAContractor & OAContractor::refreshID()
- {
- // Test for missing name information
- // Necessary for synchronizing contractorID attributes
-
- Boolean tempLast = iLastName.isWhiteSpace() || (iLastName.length()==0);
- Boolean tempFirst = iFirstName.isWhiteSpace() || (iFirstName.length()==0);
- Boolean tempMiddle = iMiddleInitial.isWhiteSpace() || (iMiddleInitial.length()==0);
-
- if (tempLast || tempFirst || tempMiddle)
- {
- throw IException("The contractor's name is incomplete. Complete all name fields and try again.");
- }
-
- setContractorID();
-
- return *this;
- }
- // Copy constructor
-
- OAContractor::OAContractor(const OAContractor & aContractor)
- : IStandardNotifier(aContractor),
- iContractorID(aContractor.contractorID()),
- iLastName(aContractor.lastName()),
- iFirstName(aContractor.firstName()),
- iMiddleInitial(aContractor.middleInitial()),
- iHomeStreet(aContractor.homeStreet()),
- iHomeCity(aContractor.homeCity()),
- iHomeState(aContractor.homeState()),
- iHomeZip(aContractor.homeZip()),
- iPhoneNumber(aContractor.phoneNumber()),
- iStartDate(aContractor.startDate()),
- iEndDate(aContractor.endDate()),
- iActiveStatus(aContractor.isActiveStatus()),
- iCurrentContract(aContractor.currentContract()),
- iIDvalid(aContractor.isIDvalid())
- {
- enableNotification();
- }
-
- // ID Validation flag getter and setter
-
- Boolean OAContractor::isIDvalid () const
- {
- return iIDvalid;
- }
-
- OAContractor & OAContractor::enableIDvalid(const Boolean enable)
- {
- if (iIDvalid != enable)
- {
- iIDvalid = enable;
- if (enable==true)
- notifyObservers(INotificationEvent(OAContractor::IDvalidId, *this, true, (void*)&iContractorID));
- else
- notifyObservers(INotificationEvent(OAContractor::IDvalidId, *this));
- } // endif
- return *this;
- }
-
- void OAContractor::clear()
- {
- // Name/ID resets not really needed for parseName() call,
- // but they are included just in case you want to use this
- // function somewhere else
-
- setFirstName(""); // embeds enableIDvalid(false) call
- setMiddleInitial("");
- setLastName("");
- setContractorID();
-
- setHomeStreet("");
- setHomeCity("");
- setHomeState("");
- setHomeZip("");
- setPhoneNumber("");
- setStartDate("");
- setEndDate("");
- enableActiveStatus(false);
- setCurrentContract("");
- }
-
- // Prime profile instance in Windows with data
-
- OAContractor & OAContractor::primeData(IProfile & aDatabase) {
-
- IString tempKey = "SusanGCarpenter";
-
- // Windows does not read from .ini files.
- // It uses a central registry,
- // so load initial contractor data into the registry.
-
- aDatabase.addOrReplaceElementWithKey("contractorID","SusanGCarpenter",tempKey);
- aDatabase.addOrReplaceElementWithKey("lastName","Carpenter",tempKey);
- aDatabase.addOrReplaceElementWithKey("firstName","Susan",tempKey);
- aDatabase.addOrReplaceElementWithKey("middleInitial","G",tempKey);
- aDatabase.addOrReplaceElementWithKey("homeStreet","123 Sesame Street",tempKey);
- aDatabase.addOrReplaceElementWithKey("homeCity","Raleigh",tempKey);
- aDatabase.addOrReplaceElementWithKey("homeState","NC",tempKey);
- aDatabase.addOrReplaceElementWithKey("homeZip","27506-1234",tempKey);
- aDatabase.addOrReplaceElementWithKey("phoneNumber","919-555-1234",tempKey);
- aDatabase.addOrReplaceElementWithKey("startDate","12/01/95",tempKey);
- aDatabase.addOrReplaceElementWithKey("endDate","12/31/96",tempKey);
- aDatabase.addOrReplaceElementWithKey("currentContract","123456",tempKey);
- aDatabase.addOrReplaceElementWithKey("activeStatus","no",tempKey);
-
- return *this;
- }