<?xml version="1.0"?>
<doc>
    <assembly>
        <name>PhoneBook.Core</name>
    </assembly>
    <members>
        <member name="T:PhoneBook.Core.Commands.BaseMapper">
            <summary>
            Extend RequestCommand with data access methods.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.Commands.BaseMapper._Mapper">
            <summary>
            Provide a field for Mapper property.
            </summary>
            
        </member>
        <member name="M:PhoneBook.Core.Commands.BaseMapper.IsEmpty(System.String)">
            <summary>
            Indicate whether string is null or zero length.
            </summary>
            <param name="input">Input to validate</param>
            <returns>True if string is nyull or zero length</returns>
            
        </member>
        <member name="M:PhoneBook.Core.Commands.BaseMapper.GuidString">
            <summary>
            Create new Global Universal Identifer as a formatted string.
            </summary>
            <returns>String representing a new GUID</returns>
            <remarks><p>
            No two calls to this method will ever return duplicate strings.
            </p></remarks>
            
        </member>
        <member name="P:PhoneBook.Core.Commands.BaseMapper.Mapper">
            <summary>
            Expose a preconfigured SqlMapper instance that Commands can use to run statements.
            </summary>
            <remarks><p>
            Commands use Mapper to invoke SqlMap statements, such as 
            <code>
            object row = Mapper.QueryForObject (QueryID, context);
            </code>.
            </p><p>
            Any SqlMapper API method may be called. 
            </p><p>
            The default behavior of BAseNexusCommand is to use the 
            command ID if the QueryID is null.
            </p></remarks>
            <returns>Preconfigured Mapper instance</returns>
            
        </member>
        <member name="T:PhoneBook.Core.Commands.BaseCommand">
            <summary>
            Provide an abtract extension of BaseNexusCommand 
            with shared members for WNE Commands, 
            including a SqlMapper factory method.
            </summary>
            <remarks><p>
            Superclasses must implement a NexusExecute method (inherited from BaseNexusCommand.
            </p><p>
            Concrete subclasses are expected to be created by a IOC Container, like Spring.NET. 
            Most concrete subclasses will be "decorator" classes designed to behave 
            differently based on what properties are set when the class is created. 
            Others may be custom classes with predefined behaviors. 
            </p><p>
            The Spring catalog provides the versatility we need to mix-and-match 
            base commands with custom commands, as needed, 
            and call either from the client in exactly the same way.
            </p><p>
            NOTE that subclasses should NOT use the Outcome property of 
            the Nexus context since they may be subcommands in a Chain. 
            All BaseCommands should use the idiom 
            <code>context[ID] = object</code>
            to store output.
            </p><p>
            NOTE after using the ReShaper code reformatter, 
            the Mapper method needs to be edited. 
            ReSharper removes an absolute reference that we actually need. 
            (Our Mapper method calls the IBatisNet Mapper method.)
            The correct line of code is maintained as a comment, 
            so that it can <b>copied</b> over the reformatted version. 
            </p></remarks>
        </member>
        <member name="F:PhoneBook.Core.Commands.BaseCommand.WILDCARD">
            <summary>
            Document the wildcard character used by SQL queries.
            </summary>
        </member>
        <member name="F:PhoneBook.Core.Commands.BaseCommand._Remark">
            <summary>
            Provide a field for the Remark property.
            </summary>
        </member>
        <member name="F:PhoneBook.Core.Commands.BaseCommand._Mapper">
            <summary>
            Provide a field for the Mapper property.
            </summary>
            
        </member>
        <member name="M:PhoneBook.Core.Commands.BaseCommand.IsEmpty(System.String)">
            <summary>
            Indicate whether string is null or zero length.
            </summary>
            <param name="input">Input to validate</param>
            <returns>True if string is nyull or zero length</returns>
            
        </member>
        <member name="M:PhoneBook.Core.Commands.BaseCommand.GuidString">
            <summary>
            Create new Global Universal Identifer as a formatted string.
            </summary>
            <returns>String representing a new GUID</returns>
            <remarks><p>
            No two calls to this method will ever return duplicate strings.
            </p></remarks>
            
        </member>
        <member name="M:PhoneBook.Core.Commands.BaseCommand.LikeMe(Agility.Core.IContext,System.String)">
            <summary>
            Prepare an attribute for use with a SQL wildcard ("LIKE") operation.
            </summary>
            <remarks><p>
            A wildcard is prepended and appended for a full, scan-across match, 
            so that the string will found in any part of the field.
            </p></remarks>
            <param name="context">Context with attribute to escape</param>
            <param name="id">Name of attribute to escape</param>
        </member>
        <member name="P:PhoneBook.Core.Commands.BaseCommand.ID">
            <summary>
            If an ID is not provided, default to the ObjectName.
            </summary>
        </member>
        <member name="P:PhoneBook.Core.Commands.BaseCommand.ObjectName">
            <summary>
            Provide a field for the Spring object name (set by Spring).
            </summary>
        </member>
        <member name="P:PhoneBook.Core.Commands.BaseCommand.Remark">
            <summary>
            Accept an arbitrary comment about a command 
            -- more for use in the XML document.
            </summary>
            
        </member>
        <member name="P:PhoneBook.Core.Commands.BaseCommand.Mapper">
            <summary>
            Expose a preconfigured SqlMapper instance that Commands can use to run statements.
            </summary>
            <remarks><p>
            Commands use Mapper to invoke SqlMap statements, such as 
            <code>
            object row = Mapper ().QueryForObject (QueryID, context);
            </code>.
            </p><p>
            Any SqlMapper API method may be called. 
            </p><p>
            The default behavior of BAseNexusCommand is to use the 
            command ID if the QueryID is null.
            </p></remarks>
            <returns>Preconfigured Mapper</returns>
            
        </member>
        <member name="T:PhoneBook.Core.Commands.BaseCount">
            <summary>
            Invoke a query that returns the count of a result set.
            </summary>
        </member>
        <member name="T:PhoneBook.Core.Commands.BaseDelete">
            <summary>
            Execute delete statement indicated by QueryID 
            for a single entity.
            </summary>
            
        </member>
        <member name="T:PhoneBook.Core.Commands.BaseEntry">
            <summary>
            Execute database statement indicated by QueryID 
            for a single object, 
            returning each attribute in the main context.
            </summary>
            
        </member>
        <member name="T:PhoneBook.Core.Commands.BaseFilterList">
            <summary>
            Execute database statement indicated by QueryID 
            and wrap result in KeyValue objects 
            so that lists can be displayed by standard methods.
            </summary>
            
        </member>
        <member name="T:PhoneBook.Core.Commands.BaseList">
            <summary>
            Run the select query indicated by QueryID, 
            first escaping any LikeIDs and extending any date ranges,
            and return the result as an IList, 
            </summary>
        </member>
        <member name="M:PhoneBook.Core.Commands.BaseList.GetArray(System.String)">
            <summary>
            Generate an array from the IDs.
            </summary>
            <returns>Array of LikeIDs</returns>
        </member>
        <member name="F:PhoneBook.Core.Commands.BaseList.LAST_TICK">
            <summary>
            Document the last second of the day 
            so as to calculate values for concepts like today and tomorrow.
            </summary>
        </member>
        <member name="M:PhoneBook.Core.Commands.BaseList.ExtendThruDate(Nexus.Core.IRequestContext)">
            <summary>
            If ThruDate is set to the minimum time (00:00), 
            set to the maximum time instead (23:59). 
            </summary>
            <param name="context"></param>
        </member>
        <member name="M:PhoneBook.Core.Commands.BaseList.PreProcess(Nexus.Core.IRequestContext)">
            <summary>
            Prepare special attributes for the query.
            </summary>
            <param name="context">The context we are processing</param>
        </member>
        <member name="M:PhoneBook.Core.Commands.BaseList.RequestExecute(Nexus.Core.IRequestContext)">
            <summary>
            Provide a default, convenience implementation that will run a "QueryForList" 
            using a data mapping statement of the same ID as the Command; 
            override as needed.
            </summary>
            <param name="context">The INexusContext we are processing.</param>
            <returns>CONTINUE, if an Exception is not thrown.</returns>
        </member>
        <member name="P:PhoneBook.Core.Commands.BaseList.LikeIDs">
            <summary>
            Names of key fields to escape for a "like" search.
            </summary>
        </member>
        <member name="T:PhoneBook.Core.Commands.BaseSave">
            <summary>
            Store an entity for future reference.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.Commands.BaseSave._KeyID">
            <summary>
            Provide a field for KeyID property.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.Commands.BaseSave._InsertID">
            <summary>
            Provide a field for InsertID property.
            </summary>
        </member>
        <member name="F:PhoneBook.Core.Commands.BaseSave._UpdateID">
            <summary>
            Provide a field for UpdateID property.
            </summary>
            
        </member>
        <member name="M:PhoneBook.Core.Commands.BaseSave.Save(Nexus.Core.IRequestContext,System.String,System.String,System.String)">
            <summary>
            Insert or update an entity to the persistent store. 
            </summary>
            <remark><p>
            If the "fieldID" is empty, use the insertID statement, 
            otherwise, use the updateID statement.
            </p></remark>
            <param name="context">The INexusContext we are processing.</param>
            <param name="fieldID">The name of the key field.</param>
            <param name="insertID">The name of the "insert" mapping for the Entity.</param>
            <param name="updateID">The name of the "update" mapping for the Entity.</param>
            <returns>False</returns>
            
        </member>
        <member name="P:PhoneBook.Core.Commands.BaseSave.KeyID">
            <summary>
            Record the unique identifier for the entity.
            </summary>
            
        </member>
        <member name="P:PhoneBook.Core.Commands.BaseSave.InsertID">
            <summary>
            Record the name of the "insert" mapping for the entity.
            </summary>
            
        </member>
        <member name="P:PhoneBook.Core.Commands.BaseSave.UpdateID">
            <summary>
            Record the name of the "update" mapping for the entity.
            </summary>
            
        </member>
        <member name="T:PhoneBook.Core.Commands.EntryInitial">
            <summary>
            Create list of initial letters for Facility Names.
            </summary>
        </member>
        <member name="F:PhoneBook.Core.Commands.EntryInitial.ALL">
            <summary>
            Document token representing match all entries.
            </summary>
        </member>
        <member name="F:PhoneBook.Core.Commands.EntryInitial.WILDCARD">
            <summary>
            Document the wildcard character used by SQL queries.
            </summary>
        </member>
        <member name="T:PhoneBook.Core.App">
            <summary>
            Tokens representing context keys.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.CATALOG_KEY">
            <summary>
            Token for Catalog property.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.ENTRY_KEY">
            <summary>
            Token for entry_key property.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.FIRST_NAME">
            <summary>
            Token for first_name property.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.LAST_NAME">
            <summary>
            Token for last_name property.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.USER_NAME">
            <summary>
            Token for user_name property.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.EXTENSION">
            <summary>
            Token for extension property.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.HIRED">
            <summary>
            Token for hired property.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.HOURS">
            <summary>
            Token for hours property.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.EDITOR">
            <summary>
            Token for editor property.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.ITEM_LIMIT">
            <summary>
            Token for SQL LIMIT clause.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.ITEM_OFFSET">
            <summary>
            Token for SQL OFFSET clause.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.ITEM_COUNT">
            <summary>
            Token for SQL COUNT clause.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.ENTRY">
            <summary>
            Token for select one command.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.ENTRY_LIST">
            <summary>
            Token for list all command.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.ENTRY_INITIAL">
            <summary>
            Token for Entry Initial command.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.LAST_NAME_LIST">
            <summary>
            Token for List Last Names command.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.FIRST_NAME_LIST">
            <summary>
            Token for List Last Names command.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.EXTENSION_LIST">
            <summary>
            Token for List Extensions command.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.USER_NAME_LIST">
            <summary>
            Token for List UserNames command.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.HIRED_LIST">
            <summary>
            Token for List Hire Dates command.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.HOURS_LIST">
            <summary>
            Token for List Hours command.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.ENTRY_FIND">
            <summary>
            Token for Entry Find command.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.ENTRY_SAVE">
            <summary>
            Token for Entry Save command.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.ENTRY_DELETE">
            <summary>
            Token for Entry Delete command.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.App.DIRECTORY_TITLE">
            <summary>
            Token for Directory page title.
            </summary>
        </member>
        <member name="F:PhoneBook.Core.App.DIRECTORY_HEADING">
            <summary>
            Token for Directory directory page heading.
            </summary>
        </member>
        <member name="F:PhoneBook.Core.App.DIRECTORY_PROMPT">
            <summary>
            Token for Directory page prompt.
            </summary>
        </member>
        <member name="T:PhoneBook.Core.AppEntry">
            <summary>
            Expose field attributes as public properties.
            </summary>
            
        </member>
        <member name="M:PhoneBook.Core.AppEntry.AddAll(PhoneBook.Core.AppEntry)">
            <summary>
            Add each source entry to our internal store. 
            </summary>
            <remarks><p>
            Entries with keys that match the property names will be exposed. 
            Other entries may be added, but can only be retrieved via Get.
            </p></remarks>
            <param name="row">Entries to add</param>
            
        </member>
        <member name="T:PhoneBook.Core.AppEntryList">
            <summary>
            Implement Nexus.Core.IEntryList for AppEntry objects.
            </summary>
            
        </member>
        <member name="T:PhoneBook.Core.AppEntryListProcessor">
            <summary>
            Implement Nexus.Core.Validators.EntryListProcess for AppEntryList.
            </summary>
            
        </member>
        <member name="T:PhoneBook.Core.AppUserProfile">
            <summary>
            Extend UserProfile to include properties specific to this application, 
            such as IsEditor.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.AppUserProfile._IsEditor">
            <summary>
            Provide a field for IsEditor property.
            </summary>
        </member>
        <member name="F:PhoneBook.Core.AppUserProfile._Entry">
            <summary>
            Provide a field for Entry property.
            </summary>
            
        </member>
        <member name="F:PhoneBook.Core.AppUserProfile._FullName">
            <summary>
            Provide a field for FullName property.
            </summary>
            
        </member>
        <member name="M:PhoneBook.Core.AppUserProfile.#ctor(System.Security.Principal.IIdentity)">
            <summary>
            Instantiate from an IIdentity.
            </summary>
            <param name="id">Identity to copy for this profile.</param>
            
        </member>
        <member name="P:PhoneBook.Core.AppUserProfile.IsEditor">
            <summary>
            Indicate whether user has editing priveleges. 
            </summary>
            
        </member>
        <member name="P:PhoneBook.Core.AppUserProfile.Entry">
            <summary>
            Record directory entry for user.
            </summary>
            
        </member>
        <member name="P:PhoneBook.Core.AppUserProfile.FullName">
            <summary>
            Record the user's full name (first and last names).
            </summary>
            
        </member>
        <member name="T:PhoneBook.Core.TelephoneProcessor">
            <summary>
            Remove punctuation on input and insert punctuation on output.
            </summary>
            <remarks><p>
            Null input or output is passed thorugh as null. 
            Non-null input or output must be strings.
            Output is formatted for local or long distane US telephone numbers. 
            Output strings that are too short or too long are passed through.
            </p></remarks>
        </member>
    </members>
</doc>
