text:
A Igreja Nossa Senhora de Lourdes é um templo católico da cidade de Caxias do Sul, no Brasil.

A paróquia de Nossa Senhora de Lourdes foi a segunda a ser criada em Caxias do Sul, desmembrada da paróquia da Catedral em 8 de fevereiro de 1942 por decreto de Dom José Barea, bispo diocesano. No mesmo ato foi indicado o padre Maximiliano Franzoi como seu primeiro pároco. Em sua criação a paróquia se estendia sobre uma grande área ainda só parcialmente urbanizada.

Da paróquia de Lourdes depois foram criadas as paróquias da Sagrada Família e do Sagrado Coração de Jesus, em 1959. Em 1964 perdeu outra fração para a paróquia de São Vicente, em 1973 dela nasceu a dos Santos Apóstolos e no ano seguinte a de São Ciro. Em 1976 foi erguido um salão de esportes anexo, e em 1985 foi inaugurada a nova casa paroquial. A paróquia desenvolve intensa atividade benemerente, a par de seu trabalho espiritual, doando cerca de 15 toneladas mensais de alimentos a pessoas desfavorecidas, e cede seus espaços para diversos grupos de ajuda.

A igreja
O prédio da Igreja foi iniciado em data não registrada, antes de 1942, sob a supervisão do padre Ernesto Mânica, sucedido pelo padre Franzoi, em um terreno doado por Luis Michelon. Em 1944 começaram os trabalhos no interior do prédio, terminados em 13 de junho de 1948 com a inauguração do púlpito. As torres foram iniciadas no ano seguinte, sendo concluídas dois anos mais tarde. O altar-mor foi inaugurado em 1953.

A igreja tem um estilo modernista com fortes traços românicos. Tem um frontispício revestido de mármore em arcos concêntricos sob um frontão triangular decorado com cornijas destacadas. Acima dele se abrem seis janelas esguias, sob um frontão que imita o do frontispício e inclui um pequeno óculo.

Lateralmente existem duas torres sineiras com janelas em arco pleno nos níveis inferiores, seguidas de um nível aberto onde estão os sinos, com coluninhas coríntias que sustentam um coruchéu prismático adornado por pequenos pináculos nos cantos da base e uma cruz no topo.

O interior possui um pequeno átrio à entrada, que passando por sob o coro leva à nave central, que é ladeada de duas naves menores, quase apenas deambulatórios, onde se abrem vitrais com imagens de santos, e ao longo das paredes está instalada uma Via Sacra de autoria de Estácio Zambelli. Ao fundo de cada nave lateral, ligeiramente elevados, dois altares em talha neogótica, de autoria de Alexandre Bartelle, onde estão dispostas diversas imagens de santos, incluindo uma rara representação da Virgem Maria ainda bebê, chamada entre os italianos de Maria Bambina, sob o altar da nave direita.

A nave central é separada das laterais por grandes colunas de capitel românico, sustentando arcos redondos e um clerestório com janelas geminadas, todas decoradas com vitrais. O teto é uma série de abóbadas de aresta, decoradas com pinturas em motivos florais com medalhões para imagens de santos. Grandes lustres de bronze dourado pendem de cima, e o piso é em ladrilhos com padrões geométricos.

A capela-mor em forma de abside se ergue um pouco do nível da nave, desta separada por um grande arco redondo, e é arrematada com uma meia-cúpula com uma pintura mostrando a ressurreição de Cristo. O retábulo ao fundo é uma fina peça de talha neogótica, também de Bartelle, com partes em douramento. Em um nicho elevado está a estátua da Padroeira, Nossa Senhora de Lourdes, com uma coroa de ouro confeccionada pela Metalúrgica Abramo Eberle.

A igreja também conta com dois confessionários antigos em madeira, igualmente neogóticos, e um pequeno batistério com uma pia batismal revestida de madeira entalhada no mesmo estilo dos altares e confessionários. O púlpito é obra de José Gollo.

Ver também

História de Caxias do Sul
Diocese de Caxias do Sul

Igrejas de Caxias do Sul
Prédios históricos de Caxias do Sul
Templos católicos romanos
Arquitetura eclética no Brasil

redpajama_set_name: RedPajamaWikipedia


text:
Rooms You Have Missed
At the CCA, the exhibition "Rooms You May Have Missed: Umberto Riva, Bijoy Jain" explores two different approaches to conceiving and building residential spaces.
The new Fendi Factory, a building rising out of the landscape
Egypt is about to open the largest archaeological museum in the world
Philippe Starck designs a new building in the center of Rome
Patagonia launches a sustainable washing machine (with Samsung)
In New York, Basquiat's apartment is available to rent for $60,000
Ikea's turntable is ready to hit the stores
Yayoi Kusama's pumpkins land in downtown Milan
Curated by CCA Director Mirko Zardini, the exhibition explores how the room as an elemental unit of architecture has been reevaluated by two architects from different generations and cultures – late-twentieth-century Italy and present-day India.
"Rooms You May Have Missed" examines alternative architectural strategies and specific, regionally influenced production methods.
Canadian Centre for Architecture gallery plan at scale1:1, Studio Mumbai workshop, India, 2014. © CCA
The drawings, models, and materials included in the exhibition illustrate the respective forms of authorship that emerge from the processes Riva and Jain put into place.
While Riva designs everything himself, devoting attention to all scales of a project from schematic and construction drawings to furniture details, Jain engages the specialized knowledge of traditional craftsmen and sources local methods and materials to shape the distinct character of each project.
Umberto Riva dismantles traditional ideas of spatial organization based on distinct rooms by designing sequences of interconnected spaces to accommodate inhabitants and their activities. The renovated plan of the one-person apartment Casa Insinga (Milan, Italy, 1987), for example, directs the occupant's progression toward a large living room at the apartment's centre through the careful placement of oak partition walls set at different angles.
Custom furniture, such as a wooden dining table attached to the wall marking the beginning of the living area, organizes the space according to a careful consideration of its potential use.
Casa Insinga, view from the living room showing corridor and entrance of the kitchen. Milan, Lombardy, Italy, 1990. Umberto Riva Architetto. Photograph by Giovanni Chiaramonte © Giovanni Chiaramonte
Working within the existing Indian construction system, Bijoy Jain collaborates with locally trained craftsmen and uses regional materials and methods that arise from each project's specific constraints. The courtyard plays the role of a versatile room and is a recurring component in Jain's designs in the Ahmedabad House (Ahmedabad, India, 2012–14), for example, courtyards serve as semipublic "interior" zones that provide shade in a hot and dry climate and are regularly used for large family and business gatherings.
The title "Rooms You May Have Missed" reflects the exhibition's exploration of interior spaces shaped by the user's habits, but also suggests the need to look beyond common North American references. In that vein, the exhibition points to other models that are based on considerations of climate, social customs, the role of artisans as collaborators, and a targeted and sophisticated integration with local resources and traditions.
Ahmedabad House, view of the courtyard with marble .lined pool Ahmedabad, Gujarat, India, 2014. Studio Mumbai Architects. Photograph by Srijaya Anumolu © Studio Mumbai
The installation is designed by the architects for the CCA in a way that extends the curatorial interest in "rooms." Riva and Jain alter the character of the museum space by reshaping the galleries as spaces that both present and embody their approaches to architecture.
Each design displays a large variety of drawings and plans, archival and recent photographs, working models, material studies and color samples, sketches and notes by collaborators, furniture, and lamps.
The accompanying graphic design is by the New York-based firm Common Name. In addition to creating the installations, Jain and Riva have generously donated a large part of their work from the exhibition to the CCA. The acquisition of these projects further enriches the contemporary European and Indian holdings of the CCA's international research collection.
Casa Insinga, view of shelf in the kitchen. Milan, Lombardy, Italy, 1990. Umberto Riva Architetto. Photograph by Giovanni Chiaramonte © Giovanni Chiaramonte
from November 4, 2014 until April 19, 2015
Rooms You May Have Missed
Umberto Riva, Bijoy Jain
curated by Mirko Zardini
Canadian Centre for Architecture (CCA)
1920, rue Baile
Latest on News

redpajama_set_name: RedPajamaCommonCrawl


In this Oct. 4, 2013 file photo, Doritos Locos tacos. Thanks to the Golden State Warriors winning Game 3 of the NBA Finals by "stealing a road win," Taco Bell is giving away free Doritos Locos Tacos.
Whether you were rooting for the Golden State Warriors or the Cleveland Cavaliers in the 2017 NBA Finals, everyone wins Tuesday with free food from Taco Bell.
The taco franchise challenged the Eastern and Western Conference winners to "steal a road game" during the tournament and offered to give free Doritos Locos Tacos to everyone in return.
Thanks to the Warriors' 118-113 victory over the Cavaliers in Game 3 in Cleveland, taco fans everywhere can now claim their prize.
The "Steal a Game, Steal a Taco" giveaway is from 2 p.m. to 6 p.m. at Taco Bell locations nationwide, while supplies last. Customers are limited to one taco and there is no purchase necessary.
Taco Bell held a similar promotion during the 2016 World Series.
Golden State defeated Cleveland on Monday to win their second NBA title in the last three seasons.


This interview is with Garth Chouteau who oversees all surveys and research related to the health benefits of video games at PopCap Games. A casual game is one which is easy to learn, does not take much time to play, yet occupies enough attention to distract one from day to day ruminations. Previous casual game research we have spoken about on this show showed that casual game play is associated with relaxation as well as decreased depression and anxiety. This time in our conversation with Garth Chouteau we talk about other research done on PopCap games which may help enhance the thinking process in the elderly and may also be associated with bonding between adults and children. In this show you'll find out why casual game play may result the sorts of cognitive improvements more commonly associated with video game play of the action type, like first person shooters. You'll also find out what features of casual games help reduce anxiety for some while increases it for others?


Everything you need to know for the 2018 NBA All-Star Weekend in Los Angeles. Follow along for NBA updates, videos and results down below.
Our All-Star reporter starting 5⃣ for the final day of #NBAAllStar Weekend coverage.
#LeBronJames posts 29 PTS, 10 REB, 8 AST en route to the #TeamLeBron win and his third #KiaAllStarMVP award!… twitter.com/i/web/status/9…NBA All-Star Game captains #LebronJames and #StephenCurry went head to head in LA!
Ste… twitter.com/i/web/status/9…"Who do you think is the best player?"
#JoelEmbiid was mic'd up for #NBAAllStar !
#JoelEmbiid posts 19 PTS, 8 REB, 2 BLK for #TeamStephen in his #NBAAllStar Game debut!
IT'S A WRAP! Thank you all for following along with the #NBAAllStar coverage.
IT'S A WRAP! Thank you all for following along with the #NBAAllStar coverage. ift.tt/2EAIA6b#DeMarDeRozan scores 21 PTS for #TeamStephen !
All of the BEST PLAYS from each first time #NBAAllStar !
ocregister.com/2018/02/18/rea…All of the TOP PLAYS from the @warriors All-Star representatives!
Wrapping up the NBA All-Star Game. Catch my video later tonight. Thank you to @JHWreporter for all the help. https://pbs.twimg.com/media/DWYDm3uU8AESpI2.jpg#ProductionLife twitter.com/JHWreporter/st…I have thoughts ocregister.com/2018/02/18/ora…#DamianLillard finishes with 21 PTS off the bench for #TeamStephen !
First All Star game and it was an amazing experience!! Learned a lot and decided not to troll tonight #TheProcess https://pbs.twimg.com/media/DWYKZ4KVwAEwcQ5.jpg.@Migos performs halftime at #NBAAllStar !
.@NERDarmy 's halftime performance at #NBAAllStar !
#KevinDurant drops 19 PTS, 6 REBS, 5 AST in the #TeamLeBron win!
All of the BEST PLAYS from #TeamStephen in the #NBAAllStar Game!
#NHLDucks take different route toward preparation for facing first-place Vegas. ocregister.com/2018/02/18/bef…Allstar 2018 is wrapped!!
I had a great time.. I enjoyed my days in LA with family and friends… www.instagram.comCongrats to the @ASASafterschool ... winners of $350 ,000 with tonight's #TeamLeBron victory! https://pbs.twimg.com/media/DWYEdyuVMAAYof5.jpg🎉🎊🎈🎉 Big win for #TeamLebron and our kids tonight. Thank you to @KingJames , @NBA for making this such a memorable e… twitter.com/i/web/status/9…The best down the stretch action from #TeamLeBron and #TeamStephen in the 2018 #NBAAllStar Game!
The crew is already working to take apart the #NBAAllStar court.
Jimmy Butler of the Timberwolves did not play a single minute tonight in the #NBAAllStar Game.#NBAAllStar : Awesome moment backstage as Magic Johnson of the LA Lakers talks with Larry Nance Jr. after the Slam D… twitter.com/i/web/status/9…The crew is already working to take apart the #NBAAllStar court.
#KevinDurant talks after the #NBAAllStar Game!
Stephen Curry of the Warriors talks to the media after the #NBAAllStar Game.
All of the BEST PLAYS from #TeamLeBron in the #NBAAllStar win!
#LeBronJames signs off from the 2018 #NBAAllStar Game!
#LeBronJames goes for 29 PTS, 10 REB, 8 AST to get the #TeamLeBron win and #KiaAllStarMVP trophy!
going for 29 PTS, 10 REB, 8 AST in the #TeamLeBron victory!
#LeBronJames and his kids after the #NBAAllStar Game!
#LeBronJames talks after being presented with the #KiaAllStarMVP trophy!
#LeBronJames talks after being presented with the #KiaAllStarMVP !
All of the down to the wire action between #TeamLeBron and #TeamStephen in the thrilling #NBAAllStar Game!
LIVE: 2018 #NBAAllStar Postgame Presser | Presented by @Cisco pscp.tv/w/bVj35TYyMjc4…LeBron James named 2018 #NBAAllStar MVP#LeBronJames helps lead #TeamLeBron to the victory and grabs the #KiaAllStarMVP award!
How do you know Donovan Mitchell has arrived? He just exchanged numbers with Floyd Mayweather. https://pbs.twimg.com/media/DWXvtsSVQAAYjDz.jpgThe THRILL of #NBAAllStar VICTORY!
#NBAAllStar https://pbs.twimg.com/media/DWXufz5X4AAEs0l.jpgLeBron James finishes with 29 points, 10 rebounds, 8 assists and hits the go-ahead bucket. #MVP #TeamLeBron holds on to defeat #TeamStephen 148-145!
#NBAAllStar Final: The LeBrons win 148-145.THE. SNARL.
#TeamLeBron 148 / #TeamStephen 145 with 10.7 left in Q4Turnover. Westbrook with a layup at the other end.#LeBronJames gets a bucket inside to give his team the 1 point lead!LeBron layup.As part of #NBACares and #NBAAllStar weekend, players help to uplift the Los Angeles community!
#LeBronJames knocks down the three to tie the game!
LOS ANGELES, CA – FEBRUARY 17: Stephen Curry #30 of Team Curry practices for the 2018 NBA All-Star game at the Verizon Up Arena at LACC on February 17, 2018 in Los Angeles, California. (Photo by Jayne Kamin-Oncea/Getty Images) NOTE TO USER: User expressly acknowledges and agrees that, by downloading and or using this photograph, User is consenting to the terms and conditions of the Getty Images License Agreement.
Kyle Kuzma talks to the media at the Los Angeles Convention Center on February 16, 2018. Kuzma and Brandon Ingram of the Lakers will participate in the NBA Rising Stars Challenge during NBA All-Star Weekend.


Tammy is the President of SVA Plumb Trust Company. She administers trusts and other fiduciary accounts for high net worth clients and their families. These include trusts and other individually managed accounts as well as trust services without investment management. Tammy works closely with clients to help them with their estate planning concerns and objectives, as well as helping multiple generations define their legacy.
Tammy has over 25 years of experience in the areas of estate planning and trust either as a trust officer or as an attorney in private practice. She enjoys helping clients understand the complex issues and helping them find answers given their unique circumstances.
Tammy is married to Bret Parks. They have one son in high school and one daughter who attends UW-Madison. They also have a foster son, now an adult, who resides in Chicago. Tammy and Bret enjoy living in rural Wisconsin after their years living in Chicago.
Tammy's hobbies include her love of Russian history, language and culture, traveling, reading, gardening, and, of course, spending time with family and friends.
Money Minute: What is Investing With Impact?


text:
package org.kuali.rice.kim.impl.role;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.persistence.NonUniqueResultException;
import javax.xml.namespace.QName;

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.joda.time.DateTime;
import org.kuali.rice.core.api.CoreApiServiceLocator;
import org.kuali.rice.core.api.criteria.Predicate;
import org.kuali.rice.core.api.criteria.PredicateFactory;
import org.kuali.rice.core.api.criteria.QueryByCriteria;
import org.kuali.rice.core.api.criteria.QueryResults;
import org.kuali.rice.core.api.datetime.DateTimeService;
import org.kuali.rice.core.api.delegation.DelegationType;
import org.kuali.rice.core.api.membership.MemberType;
import org.kuali.rice.core.api.resourceloader.GlobalResourceLoader;
import org.kuali.rice.coreservice.api.CoreServiceApiServiceLocator;
import org.kuali.rice.coreservice.api.namespace.Namespace;
import org.kuali.rice.coreservice.api.namespace.NamespaceService;
import org.kuali.rice.kim.api.KimConstants;
import org.kuali.rice.kim.api.group.Group;
import org.kuali.rice.kim.api.group.GroupService;
import org.kuali.rice.kim.api.identity.IdentityService;
import org.kuali.rice.kim.api.identity.principal.Principal;
import org.kuali.rice.kim.api.role.Role;
import org.kuali.rice.kim.api.role.RoleMember;
import org.kuali.rice.kim.api.services.KimApiServiceLocator;
import org.kuali.rice.kim.api.type.KimType;
import org.kuali.rice.kim.api.type.KimTypeAttribute;
import org.kuali.rice.kim.api.type.KimTypeInfoService;
import org.kuali.rice.kim.framework.role.RoleEbo;
import org.kuali.rice.kim.framework.role.RoleTypeService;
import org.kuali.rice.kim.framework.type.KimTypeService;
import org.kuali.rice.kim.impl.KIMPropertyConstants;
import org.kuali.rice.kim.impl.common.attribute.KimAttributeBo;
import org.kuali.rice.kim.impl.common.delegate.DelegateMemberBo;
import org.kuali.rice.kim.impl.common.delegate.DelegateTypeBo;
import org.kuali.rice.kim.impl.responsibility.ResponsibilityInternalService;
import org.kuali.rice.kim.impl.services.KimImplServiceLocator;
import org.kuali.rice.kim.impl.type.KimTypeBo;
import org.kuali.rice.krad.data.DataObjectService;
import org.kuali.rice.krad.data.KradDataServiceLocator;
import org.kuali.rice.krad.util.KRADPropertyConstants;
import org.kuali.rice.ksb.api.KsbApiServiceLocator;
import org.kuali.rice.ksb.api.registry.ServiceInfo;

abstract class RoleServiceBase {
    private static final Logger LOG = Logger.getLogger( RoleServiceBase.class );

    protected DataObjectService dataObjectService;
    protected IdentityService identityService;
    protected NamespaceService namespaceService;
    protected KimTypeInfoService kimTypeInfoService;
    protected GroupService groupService;
    protected ResponsibilityInternalService responsibilityInternalService;
    protected RoleDao roleDao;
    protected DateTimeService dateTimeService;

    /**
     * A helper enumeration for indicating which KimRoleDao method to use when attempting to get role/delegation-related lists that are not in the cache.
     *
     * @author Kuali Rice Team (rice.collab@kuali.org)
     */
    protected static enum RoleDaoAction {
        ROLE_PRINCIPALS_FOR_PRINCIPAL_ID_AND_ROLE_IDS,
        ROLE_GROUPS_FOR_GROUP_IDS_AND_ROLE_IDS,
        ROLE_MEMBERS_FOR_ROLE_IDS,
        ROLE_MEMBERSHIPS_FOR_ROLE_IDS_AS_MEMBERS,
        ROLE_MEMBERS_FOR_ROLE_IDS_WITH_FILTERS
    }

    /**
     * Converts the Qualifier Name/Value Role qualification set into Qualifier AttributeID/Value set
     *
     * @param qualification The original role qualification attribute set
     * @param validAttributeIds The mapping of attribute names to their matching attribute ids
     * @return Converted Map<String, String> containing ID/value pairs
     */
    protected Map<String, String> convertQualifierKeys(Map<String, String> qualification, Map<String, String> validAttributeIds) {
        Map<String, String> convertedQualification = new HashMap<String, String>();

        if (qualification != null && CollectionUtils.isNotEmpty(qualification.entrySet())) {
            for (Map.Entry<String, String> entry : qualification.entrySet()) {
                String attributeId = validAttributeIds.get(entry.getKey());
                if (StringUtils.isNotEmpty(attributeId)) {
                    convertedQualification.put(attributeId, entry.getValue());
                }
            }
        }

        return convertedQualification;
    }

    protected void getNestedRoleTypeMemberIds(String roleId, Set<String> members) {
        ArrayList<String> roleList = new ArrayList<String>(1);
        roleList.add(roleId);
        List<RoleMemberBo> firstLevelMembers = getStoredRoleMembersForRoleIds(roleList, MemberType.ROLE.getCode(), Collections.<String, String>emptyMap());
        for (RoleMemberBo member : firstLevelMembers) {
            if (MemberType.ROLE.equals(member.getType())) {
                if (!members.contains(member.getMemberId())) {
                    members.add(member.getMemberId());
                    getNestedRoleTypeMemberIds(member.getMemberId(), members);
                }
            }
        }
    }

    protected List<RoleMemberBo> getRoleMembersForPrincipalId(Collection<String> roleIds, String principalId) {
        return getRoleMembersForPrincipalId(roleIds, principalId, new HashMap<String, String>(0) );
    }

    protected List<RoleMemberBo> getRoleMembersForPrincipalId(Collection<String> roleIds, String principalId, Map<String,String> qualification ) {
        List<Predicate> criteria = new ArrayList<Predicate>();

        if (CollectionUtils.isNotEmpty(roleIds)) {
            if (roleIds.size() == 1) {
                criteria.add( PredicateFactory.equal(KIMPropertyConstants.RoleMember.ROLE_ID, roleIds.iterator().next()) );
            } else {
                criteria.add( PredicateFactory.in(KIMPropertyConstants.RoleMember.ROLE_ID, roleIds) );
            }
        }

        if ( StringUtils.isNotBlank(principalId) ) {
            criteria.add( PredicateFactory.equal(KIMPropertyConstants.RoleMember.MEMBER_ID, principalId) );
        }

        criteria.add( PredicateFactory.equal(KIMPropertyConstants.RoleMember.MEMBER_TYPE_CODE, MemberType.PRINCIPAL.getCode()));

        Predicate roleQualificationPredicate = getRoleQualificationPredicate(qualification);
        if ( roleQualificationPredicate != null ) {
            criteria.add( roleQualificationPredicate );
        }

        return getRoleMembershipsForPredicates(criteria);
    }

    protected List<RoleMemberBo> getRoleMembersForGroupIds(String roleId, List<String> groupIds) {
        if (CollectionUtils.isEmpty(groupIds)) {
            return new ArrayList<RoleMemberBo>();
        }

        List<RoleMemberBo> coll = getDataObjectService().findMatching( RoleMemberBo.class,
                QueryByCriteria.Builder.fromPredicates(
                        PredicateFactory.equal(KIMPropertyConstants.RoleMember.ROLE_ID, roleId),
                        PredicateFactory.equal(KIMPropertyConstants.RoleMember.MEMBER_TYPE_CODE, MemberType.GROUP.getCode()),
                        PredicateFactory.in(KIMPropertyConstants.RoleMember.MEMBER_ID, groupIds) ) ).getResults();
        List<RoleMemberBo> results = new ArrayList<RoleMemberBo>(coll.size());
        DateTime now = new DateTime( getDateTimeService().getCurrentTimestamp().getTime() );

        for (RoleMemberBo rm : coll) {
            if (rm.isActive(now)) {
                results.add(rm);
            }
        }

        return results;
    }

    /**
     * Retrieves a list of RoleMemberBo instances from the KimRoleDao.
     *
     * @param daoActionToTake An indicator for which KimRoleDao method should be used to get the results if the desired RoleMemberBos are not cached.
     * @param roleIds         The role IDs to filter by; may get used as the IDs for members that are also roles, depending on the daoActionToTake value.
     * @param principalId     The principal ID to filter by; may get ignored depending on the daoActionToTake value.
     * @param groupIds        The group IDs to filter by; may get ignored depending on the daoActionToTake value.
     * @param memberTypeCode  The member type code to filter by; may get overridden depending on the daoActionToTake value.
     * @param qualification   The original role qualification attribute set
     * @return A list of RoleMemberBo instances based on the provided parameters.
     * @throws IllegalArgumentException if daoActionToTake refers to an enumeration constant that is not role-member-related.
     */
    protected List<RoleMemberBo> getRoleMemberBoList(RoleDaoAction daoActionToTake, Collection<String> roleIds, String principalId,
            Collection<String> groupIds, String memberTypeCode, Map<String, String> qualification) {
        if (roleIds == null || roleIds.isEmpty()) {
            roleIds = Collections.emptyList();
        }

        if (groupIds == null || groupIds.isEmpty()) {
            groupIds = Collections.emptyList();
        }

        Map<String, String> validAttributeIds = new HashMap<String, String>();

        HashSet <String> kimTypeIds = new HashSet<String>();

        //Getting unique kim types
        for (String roleId : roleIds) {
            RoleBoLite role = getRoleBoLite(roleId);
            kimTypeIds.add(role.getKimTypeId());
        }

        if (qualification != null && CollectionUtils.isNotEmpty(qualification.entrySet())) {
            for (String kimTypeId : kimTypeIds) {
                for (Map.Entry<String, String> entry : qualification.entrySet()) {
                    validAttributeIds.put(entry.getKey(), getKimAttributeId(kimTypeId, entry.getKey()));
                }
            }
        }

        Map<String, String> convertedQualification = convertQualifierKeys(qualification, validAttributeIds);

        switch (daoActionToTake) {
            case ROLE_PRINCIPALS_FOR_PRINCIPAL_ID_AND_ROLE_IDS: // Search for principal role members only.
                return getRoleMembersForPrincipalId(roleIds, principalId, convertedQualification);
            case ROLE_GROUPS_FOR_GROUP_IDS_AND_ROLE_IDS: // Search for group role members only.
                return getRoleGroupsForGroupIdsAndRoleIds(roleIds, groupIds, convertedQualification);
            case ROLE_MEMBERS_FOR_ROLE_IDS: // Search for role members with the given member type code.
                return roleDao.getRoleMembersForRoleIds(roleIds, memberTypeCode, convertedQualification);
            case ROLE_MEMBERSHIPS_FOR_ROLE_IDS_AS_MEMBERS: // Search for role members who are also roles.
                return getRoleMembershipsForRoleIdsAsMembers(roleIds, convertedQualification);
            case ROLE_MEMBERS_FOR_ROLE_IDS_WITH_FILTERS: // Search for role members that might be roles, principals, or groups.
                return getRoleMembersForRoleIdsWithFilters(roleIds, principalId, groupIds, convertedQualification);
            default: // This should never happen, since the previous switch block should handle this case appropriately.
                throw new IllegalArgumentException("The 'daoActionToTake' parameter cannot refer to a non-role-member-related value!");
        }
    }

    public List<RoleMemberBo> getRoleGroupsForGroupIdsAndRoleIds(Collection<String> roleIds, Collection<String> groupIds, Map<String, String> qualification) {
        List<Predicate> criteria = new ArrayList<Predicate>();

        if (CollectionUtils.isNotEmpty(roleIds)) {
            criteria.add( PredicateFactory.in(KIMPropertyConstants.RoleMember.ROLE_ID, roleIds) );
        }

        if (CollectionUtils.isNotEmpty(groupIds)) {
            criteria.add( PredicateFactory.in(KIMPropertyConstants.RoleMember.MEMBER_ID, groupIds) );
        }
        criteria.add( PredicateFactory.equal(KIMPropertyConstants.RoleMember.MEMBER_TYPE_CODE, MemberType.GROUP.getCode()));

        Predicate roleQualificationPredicate = getRoleQualificationPredicate(qualification);
        if ( roleQualificationPredicate != null ) {
            criteria.add( roleQualificationPredicate );
        }

        return getRoleMembershipsForPredicates(criteria);
    }

    protected List<RoleMemberBo> getRoleMembershipsForRoleIdsAsMembers(Collection<String> roleIds,
            Map<String, String> qualification) {
        List<Predicate> criteria = new ArrayList<Predicate>();

        if (CollectionUtils.isNotEmpty(roleIds)) {
            criteria.add( PredicateFactory.in(KIMPropertyConstants.RoleMember.ROLE_ID, roleIds) );
        }

        criteria.add( PredicateFactory.equal(KIMPropertyConstants.RoleMember.MEMBER_TYPE_CODE, MemberType.ROLE.getCode()));

        Predicate roleQualificationPredicate = getRoleQualificationPredicate(qualification);
        if ( roleQualificationPredicate != null ) {
            criteria.add( roleQualificationPredicate );
        }

        return getRoleMembershipsForPredicates(criteria);
    }

    protected List<RoleMemberBo> getRoleMembersForRoleIdsWithFilters(Collection<String> roleIds,
            String principalId, Collection<String> groupIds, Map<String, String> qualification) {
        List<Predicate> criteria = new ArrayList<Predicate>();
        List<Predicate> orCriteria = new ArrayList<Predicate>();

        if (CollectionUtils.isNotEmpty(roleIds)) {
            orCriteria.add(PredicateFactory.and(
                    PredicateFactory.equal(KIMPropertyConstants.RoleMember.MEMBER_TYPE_CODE, MemberType.ROLE.getCode()),
                    PredicateFactory.in(KIMPropertyConstants.RoleMember.ROLE_ID, roleIds)));
        }

        if ( StringUtils.isNotBlank(principalId) ) {
            orCriteria.add(PredicateFactory.and(
                    PredicateFactory.equal(KIMPropertyConstants.RoleMember.MEMBER_TYPE_CODE, MemberType.PRINCIPAL.getCode()),
                    PredicateFactory.equal(KIMPropertyConstants.RoleMember.MEMBER_ID, principalId)));
        }

        if (CollectionUtils.isNotEmpty(groupIds)) {
            orCriteria.add(PredicateFactory.and(
                    PredicateFactory.equal(KIMPropertyConstants.RoleMember.MEMBER_TYPE_CODE, MemberType.GROUP.getCode()),
                    PredicateFactory.in(KIMPropertyConstants.RoleMember.MEMBER_ID, groupIds)));
        }

        if (!orCriteria.isEmpty()) {
            criteria.add(PredicateFactory.or(orCriteria.toArray(new Predicate[0])));
        }

        Predicate roleQualificationPredicate = getRoleQualificationPredicate(qualification);
        if ( roleQualificationPredicate != null ) {
            criteria.add( roleQualificationPredicate );
        }

        return getRoleMembershipsForPredicates(criteria);
    }

    protected List<RoleMemberBo> getRoleMembershipsForPredicates( Collection<Predicate> criteria ) {
        Collection<RoleMemberBo> coll = getDataObjectService().findMatching(RoleMemberBo.class, QueryByCriteria.Builder.fromPredicates(criteria) ).getResults();
        ArrayList<RoleMemberBo> results = new ArrayList<RoleMemberBo>(coll.size());
        DateTime now = new DateTime( getDateTimeService().getCurrentTimestamp().getTime() );

        for (RoleMemberBo rm : coll) {
            if (rm.isActive(now)) {
                results.add(rm);
            }
        }

        return results;
    }

    /**
     * Attempts to add predicates to the query to filter based on subqueries against the
     * role member attribute data table.
     *
     * An "EXISTS" subquery will be created for
     * each non-blank attribute value passed to this method and they will be anded together
     * and returned to the calling code.  The attribute value of the qualification will be compared
     * using a "LIKE" operation.  So, any non-escaped wildcard values (* or ?) will be respected.
     *
     * @param qualification An "and" predicate containing the exists predicates if at least one
     *                      qualification has a non-blank value.  null if all values
     *                      are blank or the passed in qualification is null or empty.
     */
    protected Predicate getRoleQualificationPredicate(Map<String, String> qualification) {
        if (qualification == null || CollectionUtils.isEmpty(qualification.keySet())) {
            return null;
        }

        List<Predicate> attributePredicates = new ArrayList<Predicate>( qualification.size() );

        for (Map.Entry<String, String> qualifier : qualification.entrySet()) {
            if (StringUtils.isNotBlank(qualifier.getValue())) {
                Predicate subQueryCriteria = PredicateFactory.and(
                        PredicateFactory.like("attributeValue", qualifier.getValue()),
                        PredicateFactory.equal("kimAttributeId", qualifier.getKey()),
                        PredicateFactory.equalsProperty("assignedToId", null, "parent.id" ));
                Predicate existsSubquery = PredicateFactory.existsSubquery(RoleMemberAttributeDataBo.class.getName(), subQueryCriteria);

                attributePredicates.add(existsSubquery);
            }
        }

        if ( attributePredicates.isEmpty() ) {
            return null;
        }

        if ( attributePredicates.size() == 1 ) {
            return attributePredicates.get(0);
        } else {
            return PredicateFactory.and( attributePredicates.toArray( new Predicate[attributePredicates.size()] ) );
        }
    }

    protected List<RoleMemberBo> getRoleMembershipsForMemberId(String memberType, String memberId, Map<String, String> qualification) {
        if (StringUtils.isBlank(memberId) || StringUtils.isBlank(memberType)) {
            return new ArrayList<RoleMemberBo>(0);
        }

        List<Predicate> criteria = new ArrayList<Predicate>();

        criteria.add( PredicateFactory.equal(KIMPropertyConstants.RoleMember.MEMBER_ID, memberId) );
        criteria.add( PredicateFactory.equal(KIMPropertyConstants.RoleMember.MEMBER_TYPE_CODE, memberType) );

        Predicate roleQualificationPredicate = getRoleQualificationPredicate(qualification);
        if ( roleQualificationPredicate != null ) {
            criteria.add( roleQualificationPredicate );
        }

        return getRoleMembershipsForPredicates(criteria);
    }

    /**
     * Calls the KimRoleDao's "getRolePrincipalsForPrincipalIdAndRoleIds" method and/or retrieves any corresponding members from the cache.
     */
    protected List<RoleMemberBo> getStoredRolePrincipalsForPrincipalIdAndRoleIds(Collection<String> roleIds, String principalId, Map<String, String> qualification) {
        return getRoleMemberBoList(RoleDaoAction.ROLE_PRINCIPALS_FOR_PRINCIPAL_ID_AND_ROLE_IDS, roleIds, principalId, Collections.<String>emptyList(), null, qualification);
    }

    /**
     * Calls the KimRoleDao's "getRoleGroupsForGroupIdsAndRoleIds" method and/or retrieves any corresponding members from the cache.
     */
    protected List<RoleMemberBo> getStoredRoleGroupsForGroupIdsAndRoleIds(Collection<String> roleIds, Collection<String> groupIds, Map<String, String> qualification) {
        return getRoleMemberBoList(RoleDaoAction.ROLE_GROUPS_FOR_GROUP_IDS_AND_ROLE_IDS, roleIds, null, groupIds, null, qualification);
    }

    /**
     * Calls the KimRoleDao's "getRoleMembersForRoleIds" method and/or retrieves any corresponding members from the cache.
     */
    protected List<RoleMemberBo> getStoredRoleMembersForRoleIds(Collection<String> roleIds, String memberTypeCode, Map<String, String> qualification) {
        return getRoleMemberBoList(RoleDaoAction.ROLE_MEMBERS_FOR_ROLE_IDS, roleIds, null, Collections.<String>emptyList(), memberTypeCode, qualification);
    }

    /**
     * Calls the KimRoleDao's "getRoleMembershipsForRoleIdsAsMembers" method and/or retrieves any corresponding members from the cache.
     */
    protected List<RoleMemberBo> getStoredRoleMembershipsForRoleIdsAsMembers(Collection<String> roleIds, Map<String, String> qualification) {
        return getRoleMemberBoList(RoleDaoAction.ROLE_MEMBERSHIPS_FOR_ROLE_IDS_AS_MEMBERS, roleIds, null, Collections.<String>emptyList(), null, qualification);
    }

    /**
     * Calls the KimRoleDao's "getRoleMembersForRoleIdsWithFilters" method and/or retrieves any corresponding members from the cache.
     */
    protected List<RoleMemberBo> getStoredRoleMembersForRoleIdsWithFilters(Collection<String> roleIds, String principalId, List<String> groupIds, Map<String, String> qualification) {
        return getRoleMemberBoList(RoleDaoAction.ROLE_MEMBERS_FOR_ROLE_IDS_WITH_FILTERS, roleIds, principalId, groupIds, null, qualification);
    }

    /**
     * Retrieves a RoleMemberBo object by its ID. If the role member already exists in the cache, this method will return the cached
     * version; otherwise, it will retrieve the uncached version from the database and then cache it (if it belongs to a role that allows
     * its members to be cached) before returning it.
     */
    protected RoleMemberBo getRoleMemberBo(String roleMemberId) {
        if (StringUtils.isBlank(roleMemberId)) {
            return null;
        }

        return getDataObjectService().find(RoleMemberBo.class, roleMemberId);
    }

    /**
     * Retrieves a RoleResponsibilityActionBo object by its ID.
     */
    protected RoleResponsibilityActionBo getRoleResponsibilityActionBo(String roleResponsibilityActionId) {
        if (StringUtils.isBlank(roleResponsibilityActionId)) {
            return null;
        }

        return getDataObjectService().find(RoleResponsibilityActionBo.class, roleResponsibilityActionId);
    }

    /**
     *
     */
    protected Map<String, DelegateTypeBo> getStoredDelegationImplMapFromRoleIds(Collection<String> roleIds) {
        if (roleIds != null && !roleIds.isEmpty()) {
            Map<String, DelegateTypeBo> results = new HashMap<String, DelegateTypeBo>();
            Collection<DelegateTypeBo> coll = getDataObjectService().findMatching(DelegateTypeBo.class,
                    QueryByCriteria.Builder.fromPredicates(
                            PredicateFactory.in(KIMPropertyConstants.Delegation.ROLE_ID, roleIds),
                            PredicateFactory.equal(KIMPropertyConstants.Delegation.ACTIVE, Boolean.TRUE) ) ).getResults();

            for (DelegateTypeBo delegateBo : coll) {
                results.put(delegateBo.getDelegationId(), delegateBo);
            }

            return results;
        }

        return Collections.emptyMap();
    }

    /**
     *
     */
    protected List<DelegateTypeBo> getStoredDelegationImplsForRoleIds(Collection<String> roleIds) {
        if (roleIds != null && !roleIds.isEmpty()) {
            List<DelegateTypeBo> coll = getDataObjectService().findMatching(DelegateTypeBo.class,
                    QueryByCriteria.Builder.fromPredicates(
                            PredicateFactory.in(KIMPropertyConstants.Delegation.ROLE_ID, roleIds),
                            PredicateFactory.equal(KIMPropertyConstants.Delegation.ACTIVE, Boolean.TRUE) ) ).getResults();

            return new ArrayList<DelegateTypeBo>( coll );
        }

        return Collections.emptyList();
    }

    /**
     * Calls the KimRoleDao's "getDelegationPrincipalsForPrincipalIdAndDelegationIds" method and/or retrieves any corresponding members from the cache.
     */
    protected List<DelegateMemberBo> getStoredDelegationPrincipalsForPrincipalIdAndDelegationIds(Collection<String> delegationIds, String principalId) {
        List<Predicate> criteria = new ArrayList<Predicate>();

        if ( StringUtils.isNotBlank(principalId) ) {
            criteria.add( PredicateFactory.equal(KIMPropertyConstants.DelegationMember.MEMBER_ID, principalId) );
        } else {
            return Collections.emptyList(); // no principal ID - abort
        }

        criteria.add( PredicateFactory.equal(KIMPropertyConstants.DelegationMember.MEMBER_TYPE_CODE, MemberType.PRINCIPAL.getCode()));

        if (delegationIds != null && !delegationIds.isEmpty()) {
            criteria.add( PredicateFactory.in(KIMPropertyConstants.DelegationMember.DELEGATION_ID, delegationIds) );
        }

        List<DelegateMemberBo> coll = getDataObjectService().findMatching(DelegateMemberBo.class, QueryByCriteria.Builder.fromPredicates(criteria) ).getResults();
        ArrayList<DelegateMemberBo> results = new ArrayList<DelegateMemberBo>(coll.size());
        DateTime now = new DateTime( getDateTimeService().getCurrentTimestamp().getTime() );

        for (DelegateMemberBo rm : coll) {
            if (rm.isActive(now)) {
                results.add(rm);
            }
        }

        return results;
    }

    /**
     * Retrieves a DelegateMemberBo object by its ID. If the delegation member already exists in the cache, this method will return the cached
     * version; otherwise, it will retrieve the uncached version from the database and then cache it before returning it.
     */
    protected DelegateMemberBo getDelegateMemberBo(String delegationMemberId) {
        if (StringUtils.isBlank(delegationMemberId)) {
            return null;
        }

        return getDataObjectService().find(DelegateMemberBo.class,delegationMemberId);
    }

    /**
     * Retrieves a DelegateMemberBo List by (principal/group/role) member ID and delegation ID. If the List already exists in the cache,
     * this method will return the cached one; otherwise, it will retrieve the uncached version from the database and then cache it before returning it.
     */
    protected List<DelegateMemberBo> getDelegationMemberBoListByMemberAndDelegationId(String memberId, String delegationId) {

        Map<String, String> searchCriteria = new HashMap<String, String>(2);
        searchCriteria.put(KimConstants.PrimaryKeyConstants.MEMBER_ID, memberId);
        searchCriteria.put(KimConstants.PrimaryKeyConstants.DELEGATION_ID, delegationId);
        return new ArrayList<DelegateMemberBo>(getDataObjectService().findMatching(DelegateMemberBo.class, QueryByCriteria.Builder.andAttributes(searchCriteria).build()).getResults());
    }

    protected Object getMember(String memberTypeCode, String memberId) {
        if (StringUtils.isBlank(memberId)) {
            return null;
        }

        if (MemberType.PRINCIPAL.getCode().equals(memberTypeCode)) {
            return getIdentityService().getPrincipal(memberId);
        } else if (MemberType.GROUP.getCode().equals(memberTypeCode)) {
            return getGroupService().getGroup(memberId);
        } else if (MemberType.ROLE.getCode().equals(memberTypeCode)) {
            return getRoleBo(memberId);
        }

        return null;
    }

    protected String getMemberName(Object member) {
        if (member == null) {
            return "";
        }

        if (member instanceof Principal) {
            return ((Principal) member).getPrincipalName();
        }

        if (member instanceof Group) {
            return ((Group) member).getName();
        }

        if (member instanceof Role) {
            return ((Role) member).getName();
        }

        return member.toString();
    }

    protected RoleBo getRoleBo(String roleId) {
        if (StringUtils.isBlank(roleId)) {
            return null;
        }

        return getDataObjectService().find(RoleBo.class, roleId);
    }

    protected RoleBoLite getRoleBoLite(String roleId) {
        if (StringUtils.isBlank(roleId)) {
            return null;
        }

        return getDataObjectService().find(RoleBoLite.class, roleId);
    }

    protected DelegateTypeBo getDelegationOfType(String roleId, DelegationType delegationType) {
        List<DelegateTypeBo> roleDelegates = getRoleDelegations(roleId);
        if (isDelegationPrimary(delegationType)) {
            return getPrimaryDelegation(roleId, roleDelegates);
        } else {
            return getSecondaryDelegation(roleId, roleDelegates);
        }
    }

    private DelegateTypeBo getSecondaryDelegation(String roleId, List<DelegateTypeBo> roleDelegates) {
        DelegateTypeBo secondaryDelegate = null;
        RoleBoLite roleBo = getRoleBoLite(roleId);
        for (DelegateTypeBo delegate : roleDelegates) {
            if (isDelegationSecondary(delegate.getDelegationType())) {
                secondaryDelegate = delegate;
            }
        }

        if (secondaryDelegate == null) {
            secondaryDelegate = new DelegateTypeBo();
            secondaryDelegate.setRoleId(roleId);
            secondaryDelegate.setDelegationType(DelegationType.SECONDARY);
            secondaryDelegate.setKimTypeId(roleBo.getKimTypeId());
        }

        return secondaryDelegate;
    }

    protected DelegateTypeBo getPrimaryDelegation(String roleId, List<DelegateTypeBo> roleDelegates) {
        DelegateTypeBo primaryDelegate = null;
        RoleBoLite roleBo = getRoleBoLite(roleId);
        for (DelegateTypeBo delegate : roleDelegates) {
            if (isDelegationPrimary(delegate.getDelegationType())) {
                primaryDelegate = delegate;
            }
        }

        if (primaryDelegate == null) {
            primaryDelegate = new DelegateTypeBo();
            primaryDelegate.setRoleId(roleId);
            primaryDelegate.setDelegationType(DelegationType.PRIMARY);
            primaryDelegate.setKimTypeId(roleBo.getKimTypeId());
        }

        return primaryDelegate;
    }

    protected RoleMemberBo matchingMemberRecord(List<RoleMemberBo> roleMembers, String memberId, String memberTypeCode, Map<String, String> qualifier) {
        for (RoleMemberBo rm : roleMembers) {
            if (doesMemberMatch(rm, memberId, memberTypeCode, qualifier)) {
                return rm;
            }
        }

        return null;
    }

    protected boolean isDelegationPrimary(DelegationType delegationType) {
        return DelegationType.PRIMARY.equals(delegationType);
    }

    protected boolean isDelegationSecondary(DelegationType delegationType) {
        return DelegationType.SECONDARY.equals(delegationType);
    }

    private List<DelegateTypeBo> getRoleDelegations(String roleId) {
        if (roleId == null) {
            return new ArrayList<DelegateTypeBo>();
        }

        return getStoredDelegationImplsForRoleIds(Collections.singletonList(roleId));

    }

    protected RoleBo getRoleBoByName(String namespaceCode, String roleName) {
        if (StringUtils.isBlank(namespaceCode)
                || StringUtils.isBlank(roleName)) {
            return null;
        }

        Map<String, Object> criteria = new HashMap<String, Object>(3);
        criteria.put(KimConstants.UniqueKeyConstants.NAMESPACE_CODE, namespaceCode);
        criteria.put(KimConstants.UniqueKeyConstants.NAME, roleName);
        criteria.put(KRADPropertyConstants.ACTIVE, Boolean.TRUE);

        QueryResults<RoleBo> results =
                getDataObjectService().findMatching(RoleBo.class, QueryByCriteria.Builder.andAttributes(criteria).build());
        if (results.getResults().isEmpty()) {
            return null;
        } else if (results.getResults().size() > 1) {
            throw new NonUniqueResultException("Finding a role by name should return a unique role, "
                    + "but encountered multiple. namespaceCode='" + namespaceCode + "', name='" + roleName +"'");
        }

        return results.getResults().get(0);
    }

    protected RoleBoLite getRoleBoLiteByName(String namespaceCode, String roleName) {
        if (StringUtils.isBlank(namespaceCode)
                || StringUtils.isBlank(roleName)) {
            return null;
        }

        Map<String, Object> criteria = new HashMap<String, Object>(3);
        criteria.put(KimConstants.UniqueKeyConstants.NAMESPACE_CODE, namespaceCode);
        criteria.put(KimConstants.UniqueKeyConstants.NAME, roleName);
        criteria.put(KRADPropertyConstants.ACTIVE, Boolean.TRUE);

        QueryResults<RoleBoLite> results =
                getDataObjectService().findMatching(RoleBoLite.class, QueryByCriteria.Builder.andAttributes(criteria).build());
        if (results.getResults().isEmpty()) {
            return null;
        } else if (results.getResults().size() > 1) {
            throw new NonUniqueResultException("Finding a role by name should return a unique role, "
                    + "but encountered multiple. namespaceCode='" + namespaceCode + "', name='" + roleName +"'");
        }

        return results.getResults().get(0);
    }

    protected List<RoleMember> doAnyMemberRecordsMatchByExactQualifier( RoleEbo role, String memberId, RoleDaoAction daoActionToTake, Map<String, String> qualifier ) {
        List<RoleMemberBo> roleMemberBos = getRoleMembersByExactQualifierMatch(role, memberId, daoActionToTake, qualifier);
        List<RoleMember> roleMembers = new ArrayList<RoleMember>();
        if (CollectionUtils.isNotEmpty(roleMemberBos)) {
            for (RoleMemberBo bo : roleMemberBos) {
                roleMembers.add(RoleMemberBo.to(bo));
            }

            return roleMembers;
        }

        return Collections.emptyList();
    }

    protected List<RoleMemberBo> getRoleMembersByExactQualifierMatch(RoleEbo role, String memberId, RoleDaoAction daoActionToTake, Map<String, String> qualifier) {
        List<RoleMemberBo> rms = new ArrayList<RoleMemberBo>();
        RoleTypeService roleTypeService = getRoleTypeService( role.getId() );
        if (roleTypeService != null) {
            List<String> attributesForExactMatch = roleTypeService.getQualifiersForExactMatch();
            if (CollectionUtils.isNotEmpty(attributesForExactMatch)) {
                switch (daoActionToTake) {
                    case ROLE_GROUPS_FOR_GROUP_IDS_AND_ROLE_IDS : // Search for group role members only.
                        rms = getStoredRoleGroupsForGroupIdsAndRoleIds(Collections.singletonList(role.getId()), Collections.singletonList(memberId), populateQualifiersForExactMatch(qualifier, attributesForExactMatch));
                        break;
                    case ROLE_PRINCIPALS_FOR_PRINCIPAL_ID_AND_ROLE_IDS : // Search for principal role members only.
                        rms = getStoredRolePrincipalsForPrincipalIdAndRoleIds(Collections.singletonList(role.getId()), memberId, populateQualifiersForExactMatch(qualifier, attributesForExactMatch));
                        break;
                    case ROLE_MEMBERSHIPS_FOR_ROLE_IDS_AS_MEMBERS : // Search for roles as role members only.
                        List<RoleMemberBo> allRoleMembers = getStoredRoleMembershipsForRoleIdsAsMembers(Collections.singletonList(role.getId()), populateQualifiersForExactMatch(qualifier, attributesForExactMatch));
                        for(RoleMemberBo rm : allRoleMembers) {
                            if ( rm.getMemberId().equals(memberId) ) {
                                rms.add(rm);
                            }
                        }
                        break;
                    default : // The daoActionToTake parameter is invalid; throw an exception.
                        throw new IllegalArgumentException("The 'daoActionToTake' parameter cannot refer to a non-role-member-related value!");
                }

            }
        }

        return rms;
    }

    //return roleMemberId of match or null if no match
    protected RoleMember doAnyMemberRecordsMatch(List<RoleMemberBo> roleMembers, String memberId, String memberTypeCode, Map<String, String> qualifier) {
        for (RoleMemberBo rm : roleMembers) {
            if (rm.isActive() && doesMemberMatch(rm, memberId, memberTypeCode, qualifier)) {
                return RoleMemberBo.to(rm);
            }
        }

        return null;
    }

    protected boolean doesMemberMatch(RoleMemberBo roleMember, String memberId, String memberTypeCode, Map<String, String> qualifier) {
        if (roleMember.getMemberId().equals(memberId) && roleMember.getType().getCode().equals(memberTypeCode)) {
            // member ID/type match
            Map<String, String> roleQualifier = roleMember.getAttributes();
            if ((qualifier == null || qualifier.isEmpty())
                    && (roleQualifier == null || roleQualifier.isEmpty())) {
                return true; // blank qualifier match
            } else {
                if (qualifier != null && roleQualifier != null && qualifier.equals(roleQualifier)) {
                    return true; // qualifier match
                }
            }
        }

        return false;
    }

    /**
     * Retrieves the role type service associated with the given role ID
     *
     * @param roleId the role ID to get the role type service for
     * @return the Role Type Service
     */
    protected RoleTypeService getRoleTypeService(String roleId) {
        RoleBoLite roleBo = getRoleBoLite(roleId);
        if (roleBo != null){
            KimType roleType = KimTypeBo.to(roleBo.getKimRoleType());
            if (roleType != null) {
                return getRoleTypeService(roleType);
            }
        }

        return KimImplServiceLocator.getDefaultRoleTypeService();
    }

    /**
     * Retrieves the role type service for the given service name.
     *
     * @param serviceName the name of the service to retrieve
     * @return the Role Type Service
     */
    protected RoleTypeService getRoleTypeServiceByName(String serviceName) {
        try {
            KimTypeService service = (KimTypeService) GlobalResourceLoader.getService(QName.valueOf(serviceName));
            if (service != null && service instanceof RoleTypeService) {
                return (RoleTypeService) service;
            }
            LOG.warn("Unable to find role type service by name: " + serviceName + ". Defaulting to: kimNoMembersRoleTypeService ");
            return (RoleTypeService) KimImplServiceLocator.getService("kimNoMembersRoleTypeService");
        } catch (Exception ex) {
            LOG.warn("Unable to find role type service by name: " + serviceName, ex);
            return (RoleTypeService) KimImplServiceLocator.getService("kimNoMembersRoleTypeService");
        }
    }

    protected RoleTypeService getRoleTypeService(KimType typeInfo) {
        String serviceName = typeInfo.getServiceName();
        if (serviceName != null) {
            try {
                KimTypeService service = (KimTypeService) GlobalResourceLoader.getService(QName.valueOf(serviceName));
                if (service != null && service instanceof RoleTypeService) {
                    return (RoleTypeService) service;
                }
                LOG.warn("Unable to find role type service with name: " + serviceName + ". Defaulting to: kimNoMembersRoleTypeService ");
                return (RoleTypeService) KimImplServiceLocator.getService("kimNoMembersRoleTypeService");
            } catch (Exception ex) {
                LOG.error("Unable to find role type service with name: " + serviceName, ex);
                return (RoleTypeService) KimImplServiceLocator.getService("kimNoMembersRoleTypeService");
            }
        }

        return KimImplServiceLocator.getDefaultRoleTypeService();
    }

    protected Map<String, String> populateQualifiersForExactMatch(Map<String, String> defaultQualification, List<String> attributes) {
        Map<String,String> qualifiersForExactMatch = new HashMap<String,String>();
        if (defaultQualification != null && CollectionUtils.isNotEmpty(defaultQualification.keySet())) {
            for (String attributeName : attributes) {
                if (StringUtils.isNotEmpty(defaultQualification.get(attributeName))) {
                    qualifiersForExactMatch.put(attributeName, defaultQualification.get(attributeName));
                }
            }
        }

        return qualifiersForExactMatch;
    }

    // TODO: pulling attribute IDs repeatedly is inefficient - consider caching the entire list as a map
    // TODO: KULRICE-12100: Most of the time there should be only one result for the kimTypeId and attributeName, but it is not guaranteed, which it should be.
    // TODO: pulling attribute IDs repeatedly is inefficient - consider caching the entire list as a map
    /*
     * search by attribute name, if none return null, if there is only one, return. If there are multiple, then
     * search by kimType: if found return else
     *     search by appId of kimType : if found return else
     *          search by rice app id : if found return else
     *              search by kuali app id : if found return else
     *                  return null.
     */
    protected String getKimAttributeId(String kimTypeId, String attributeName) {
        Collection<KimAttributeBo> attributeData = getAttributeByName(attributeName);
        String kimAttributeId = null;

        if (CollectionUtils.isNotEmpty(attributeData)) {
            if (CollectionUtils.size(attributeData) == 1) {
                kimAttributeId = attributeData.iterator().next().getId();
            } else {
                kimAttributeId = getCorrectAttributeId(kimTypeId, attributeName, attributeData);
            }
        }

        return kimAttributeId;
    }

    /*
     * Searches the KimAttributeBo for the attribute by name
     */
    protected Collection<KimAttributeBo> getAttributeByName(String attributeName) {
        /*Map<String, Object> critieria = new HashMap<String, Object>(1);
        critieria.put(KimConstants.AttributeConstants.ATTRIBUTE_NAME, attributeName);*/
        QueryResults<KimAttributeBo> attributeData = getDataObjectService().findMatching(KimAttributeBo.class, QueryByCriteria.Builder.forAttribute("attributeName", attributeName).build());

        return attributeData.getResults();
    }

    /*
     * Attempts to get the right attribute for the kimType. If it fails, then tries by namespace.
     */
    protected String getCorrectAttributeId(String kimTypeId, String attributeName, Collection<KimAttributeBo> attributeData) {
        KimType kimType = getKimTypeInfoService().getKimType(kimTypeId);
        String attribute = getAttributeFromKimType(kimType, attributeName);

        if (attribute != null) {
            return attribute;
        } else {
            return getAttributeFromNamespace(kimType, attributeName, attributeData);
        }
    }

    protected String getAttributeFromKimType(KimType kimType, String attributeName) {
        if (kimType != null) {
            for (KimTypeAttribute attribute : kimType.getAttributeDefinitions()) {
                if (attribute.getKimAttribute() != null
                        && StringUtils.equals(attributeName, attribute.getKimAttribute().getAttributeName())) {
                    return attribute.getKimAttribute().getId();
                }
            }
        }

        return null;
    }

    /*
     * Gets the attribute based on the app namespace, if it cannot find then tries Rice namespace and then Kuali.
     */
    protected String getAttributeFromNamespace(KimType kimType, String attributeName, Collection<KimAttributeBo> attributes) {
        String appId = getAppIdFromNamespace(kimType.getNamespaceCode());
        String attributeId = getAttributeFromAppId(attributes, appId);

        if (attributeId == null) {
            attributeId = getAttributeFromAppId(attributes, KimConstants.KIM_TYPE_RICE_NAMESPACE);
            if (attributeId == null) {
                attributeId = getAttributeFromAppId(attributes, KimConstants.KIM_TYPE_DEFAULT_NAMESPACE);
            }
        }

        return attributeId;
    }

    protected String getAppIdFromNamespace(String namespaceCode) {
        Namespace appNamespace = getNamespaceService().getNamespace(namespaceCode);
        if (appNamespace == null) {
            throw new RuntimeException("Namespace " + namespaceCode + " not mapped in namespace table.");
        }

        return appNamespace.getApplicationId();
    }

    /*
     * Compares the appId of the attribute with the given appId.
     * Here we make the assumption that there are not multiple attributes with the same name
     * for a given application.
     */
    protected String getAttributeFromAppId(Collection<KimAttributeBo> attributes, String appId) {
        for (KimAttributeBo attribute : attributes) {
            if (StringUtils.equalsIgnoreCase(getAppIdFromNamespace(attribute.getNamespaceCode()), appId)) {
                return attribute.getId();
            }
        }

        return null;
    }

    protected KimTypeInfoService getKimTypeInfoService() {
        if (kimTypeInfoService == null) {
            kimTypeInfoService = KimApiServiceLocator.getKimTypeInfoService();
        }

        return kimTypeInfoService;
    }

    protected NamespaceService getNamespaceService() {
        if (namespaceService == null) {
            namespaceService = CoreServiceApiServiceLocator.getNamespaceService();
        }

        return namespaceService;
    }

    protected IdentityService getIdentityService() {
        if (identityService == null) {
            identityService = KimApiServiceLocator.getIdentityService();
        }

        return identityService;
    }

    protected GroupService getGroupService() {
        if (groupService == null) {
            groupService = KimApiServiceLocator.getGroupService();
        }

        return groupService;
    }

    protected ResponsibilityInternalService getResponsibilityInternalService() {
        if (responsibilityInternalService == null) {
            responsibilityInternalService = KimImplServiceLocator.getResponsibilityInternalService();
        }

        return responsibilityInternalService;
    }

    protected RoleDao getRoleDao() {
        return this.roleDao;
    }

    public void setRoleDao(RoleDao roleDao) {
        this.roleDao = roleDao;
    }

    public DataObjectService getDataObjectService() {
        if ( dataObjectService == null ) {
            dataObjectService = KradDataServiceLocator.getDataObjectService();
        }

        return dataObjectService;
    }

    public void setDataObjectService(DataObjectService dataObjectService) {
        this.dataObjectService = dataObjectService;
    }

    public DateTimeService getDateTimeService() {
        if ( dateTimeService == null ) {
            dateTimeService = CoreApiServiceLocator.getDateTimeService();
        }

        return dateTimeService;
    }

    public void setDateTimeService(DateTimeService dateTimeService) {
        this.dateTimeService = dateTimeService;
    }
    public void notifyOnMemberRemoval(RoleMember member) {
        RoleBoLite roleBo = getRoleBoLite(member.getRoleId());
        if (roleBo != null) {
            KimType roleType = KimTypeBo.to(roleBo.getKimRoleType());
            if (roleType != null) {
                String serviceName = roleType.getServiceName();
                if (serviceName != null) {
                    KimTypeService service = null;
                    try {
                        // Check service version for compatibility since this was added in 2.1.2
                        boolean validVersion = false;

                        List<ServiceInfo> serviceInfos = KsbApiServiceLocator.getServiceRegistry().getOnlineServicesByName(QName.valueOf(serviceName));
                        for(ServiceInfo serviceInfo : serviceInfos) {
                            String version = serviceInfo.getServiceVersion();
                            if (StringUtils.isNotBlank(version) && version.compareTo("2.1.2") >= 0) {
                                validVersion = true;
                                break;
                            }
                        }

                        if (validVersion) {
                            service = (KimTypeService) KsbApiServiceLocator.getMessageHelper().getServiceAsynchronously(QName.valueOf(serviceName));
                            if (service != null && service instanceof RoleTypeService) {
                                ((RoleTypeService) service).roleMemberRemoved(member);
                            }
                        }
                    } catch (Exception ex) {
                        LOG.error("Unable to find role type service with name: " + serviceName, ex);
                    }
                }
            }
        }
    }

}

redpajama_set_name: RedPajamaGithub


text:
Cops: Driver involved in Riverhead hit-and-run arrested in Mattituck
By Paul Squire
A man who police believe was connected with a hit-and-run collision in Riverhead Friday was arrested in Mattituck after he initially refused to stop for police and was later caught with prescription drugs, according to a Southold Town police news release.
The incident occurred about 10:30 a.m., when local police spotted a vehicled that matched the description of one involved in a hit-and-run driving in Mattituck, police said. The vehicle's driver, 23-year-old Anthony Kress of Medford, refused to stop for "numerous marked police vehicles" before he was pulled over on New Suffolk Avenue, according to the police statement.
During a search, police found Mr. Kress had a prescription drug that was outside its container, police said. He was arrested and charged with possession of a controlled substance, failure to comply with police and a violation of public health law, according to the statement.
He was taken to police headquarters and later released on bail with a future date to appear in town court.
Photo caption: Police vehicles at the scene of Mr. Kress' arrest Friday morning. (Credit: Kelly Zegers)
Paul Squire
Email Paul Squire Email Created with Sketch. Email Paul Squire
A new heart for Ruby who returns home after 126-day journey
The 7-month-old Wading River girl who experienced heart failure four months ago and had been surviving on a so-called...
01.16.2020	Riverhead School District
Riverhead to begin Unified Sports hoops team to create new opportunity for special ed and general ed students
A competitive basketball program coming to Riverhead High School will "bridge the gap" between special education and general education...
Former Supervisor Laura Jens-Smith to run for Assembly
Former Riverhead Supervisor Laura Jens-Smith said she plans to seek the Democratic nod for the 2nd Assembly District currently...
Candidates lining up for LaValle's state Senate seat
With longtime New York state Sen. Ken LaValle's announcement that he won't seek reelection to the 1st District seat...
Cell phone dispute led to altercation that left 65-year-old man dead, family says; suspect held on $150K bail
A man accused of a Jan. 2 assault that led to the victim's death three days later was ordered...
Making her pageant debut, Wading River teen to compete for Miss New York 2020
Rachael Grieco is a newcomer to the world of pageants. But that hasn't stopped the Wading River teen from...


Contents Lonely man -- Gliding chords, recorded on 29 Jan. 1951 -- Burnett Cross explains -- First gliding chords on the reed box tone tool, recorded on 30 September 1951 -- Oscillators -- Percy Grainger introduces the butterfly piano and explains his free music.
Other author Grainger, Percy, 1882-1961. Lonely man.


"To endow the writer publicly with a good fleshly body, to reveal that he likes dry white wine and underdone steak, is to make even more miraculous for me, and of a more divine essence, the products of his art. Far from the details of his daily life bringing nearer to me the nature of his inspiration and making it clearer, it is the whole mystical singularity of his condition which the writer emphasizes by such confidences. For I cannot but ascribe to some superhumanly the existence of beings vast enough to wear blue pajamas at the very moment when they manifest themselves as universal conscience."
"There are people who think that wrestling is an ignoble sport. Wrestling is not sport, it is a spectacle, and it is no more ignoble to attend a wrestled performance of suffering than a performance of the sorrows of Arnolphe or Andromaque."
"To eat steak rare. . . represents both a nature and a morality."
"Literature is without proofs. By which it must be understood that it cannot prove, not only what it says, but even that it is worth the trouble of saying it."
"Through the mythology of Einstein, the world blissfully regained the image of knowledge reduced to a formula."
"I call the discourse of power any discourse that engenders blame, hence guilt, in its recipient."
"What the public wants is the image of passion, not passion itself."
"The New is not a fashion, it is a value."
"To hide a passion totally (or even to hide, more simply, its excess) is inconceivable: not because the human subject is too weak, but because passion is in essence made to be seen: the hiding must be seen: I want you to know that I am hiding something from you, that is the active paradox I must resolve: at one and the same time it must be known and not known: I want you to know that I don't want to show my feelings: that is the message I address to the other."
"I think that cars today are almost the exact equivalent of the great Gothic cathedrals: I mean the supreme creation of an era, conceived with passion by unknown artists, and consumed in image if not in usage by a whole population which appropriates t"
"Historically and politically, the petit-bourgeois is the key to the century. The bourgeois and proletariat classes have become abstractions: the petite-bourgeoisie, in contrast, is everywhere, you can see it everywhere, even in the areas of the bourgeois and the proletariat, what's left of them."


text:
Recovery coaches help people overcome addiction, mental illness
Amy Foley, executive director of Hope Community Center for Mental Wellness, and Rhonda Birkhimer, peer recovery support specialist
BATAVIA, OH (Oct. 4, 2019) — Rhonda Birkhimer, 41, calls herself a "hope dealer."
Officially, Birkhimer works as a "certified peer recovery support specialist" for the Hope Community Center for Mental Wellness in Amelia.
"I like hope dealer, or recovery coach, better," Birkhimer said. "That connects with people who are struggling."
Birkhimer joins a handful of other peer recovery support specialists in Clermont County, dealing hope to people struggling with addiction, mental health issues, trauma, codependency and the like. The Clermont County Mental Health and Recovery Board was one of the first in the state to recognize the importance of recovery coaches, using them in treatment and as a voice in the community. In 2014, Birkhimer and best friend Kristy Mudd were the first two certified recovery coaches in Clermont County.
"I'm in the field the majority of the time, at agencies, the courts, doing home visits," Birkhimer said. She's assigned to Judge James Shriver's Family Recovery Court and Clermont County Municipal Court's Intensive Supervision Probation. She works indirectly with the Clermont Recovery Center, Quick Response Teams, recovery houses and Mercy Health – Clermont Hospital.
Birkhimer and Mudd earned certification through the Ohio Department of Mental Health and Addiction Services. In Ohio, peer recovery supporters become certified by taking in-person training or by having three years of work or volunteer experience as a peer navigator, peer specialist, peer supporter, or peer recovery coach. Regardless of the pathway to certification, individuals must also complete 16 hours of online E-Based Academy courses, which include topics such as ethics, human trafficking and trauma-informed care, pass the OhioMHAS Peer Recovery Services exam, sign and agree to the OhioMHAS Peer Recovery Services Code of Ethics and pass a Bureau of Criminal Investigations (BCI) background check.
Peer recovery supporters provide community-based services for people with a mental illness or substance use disorder. They promote recovery, self-determination, self-advocacy, well-being and independence.
"Peer support holds the hope for people that they can find recovery, especially when people don't hold the hope themselves," Hope Center Executive Director Amy Foley said. "Individual successes happen all of the time. We help them see a future they could not have imagined, even six months earlier."
Birkhimer and Mudd started their journeys as volunteers. Both participated in SOLACE, a support group for individuals and families affected by addiction. Birkhimer has been in recovery from opiate addiction since going through Hamilton County Drug Court on a heroin charge in 2009.
"Rhonda and Kristy came to me and said that things are not working in our community," Foley said. "Their experience has earned them respect. They're a powerful voice for what's working and what's not working, and how we can change what's not working."
Birkhimer added: "Amy heard about the holes in the system and connected the dots. We wanted to help people when they reached out for help."
Foley, Birkhimer and Mudd embarked on a year-long journey evaluating access to good resources ranging from treatment centers, to food pantries to housing to sober support to Medicaid.
"We learned that the recovery and mental health system is overwhelmed and you can't get treatment on demand unless you're super rich," Foley said. "People expect an immediate response when they decide to get clean, but resources are finite."
Birkhimer said people would detox in jail, only to use again, OD and even die.
"They get out of jail and don't know what to do," she said. "They didn't realize they could get Medicaid and treatment."
Foley added: "They need a safe plan. They need to be deliberate."
Now, while still incarcerated, inmates sign up for Medicaid and undergo assessment for treatment. They make the connections with people and resources who will help them maintain a healthy lifestyle for years to come, one day at a time.
Birkhimer takes people to 12-step meetings and other support groups and gets them started building a sober support network. She helps them tap into family resources and other supports.
"Recovery coaches meet people wherever they are – in jail, in the court room, even in tents in the woods," Birkhimer said. "We go to the client and we get connected. At jail, we find out if they want to stay sober and we find support for them."
Birkhimer appreciates the continuing education gained at conferences and seminars on topics such as trauma resiliency. She found the two-day annual Ohio Opiate and Other Drug Conference particularly helpful.
"We're building up resources so we can do a lot to help people," Birkhimer said. "Things are always changing. The first year, they didn't talk about meth at all. Last year, they talked about it a lot."
Birkhimer says she gets a high from helping others recover.
"The feeling is amazing," she said. "It has fueled us. This is exceptional for my recovery, and they pay me for it. It makes me humble and grateful every day. It keeps me remembering how easily I could go back to it."
Birkhimer, herself, has come a long way. When she moved back to Clermont County in 2014 she was on disability with no kids. She had suffered severe strokes back in 2002 due to her unhealthy lifestyle.
Now, she's got a career, is raising her sister's two teenagers, and is energized by the difference she gets to make in the lives of others.
"If you just keep doing the next right thing, good things happen," she said.
« Adoption brings many rewards
Water Resources Department correcting discoloration problem »


text:
Lloyd B. Carleton ( - August 8, 1933) was an American director, producer, and actor. He was born in New York City in . Both of his parents were born in Virginia and Carleton's father, John T. Little Senior, supported the family as a clothing importer. The couple firstborn was John T. Little Jr born in 1868. Carleton Bassitt Little would follow in .  Their last child Arthur W. Little, was born in 1878. The two older brothers graduated from  Columbia College with law degrees. John Jr would become one of New York's finest lawyers. Carleton briefly tried the legal profession but became driven by a bigger calling.

By 1900, he was acting on Broadway.  Soon he became involved with stage managing, production, stock players, and managing some of the theater's most significant names. During this time, Charles Frohman suggested he adopt the stage name of Lloyd B. Carleton. After a brief stint in Australia, a new visual media struck his fancy. Movies were continuing their upward spiral. After studying film-making techniques at the American Biograph studios, acting in a 1910 film,  he got a job directing movies at Thanhouser. He would continue to direct movies at Lubin, Selig, Universal, and Clermont Photoplays. He formed his own production company, Lloyd Carleton Productions, and used a variety of distributors.
The final curtain on his film endeavors ended in 1928. He moved back to New York.  He managed to act in one final broadway play before his death on August 8, 1933.

Theatrical plays

Complete filmography

References

See also
List of American films of 1910
List of American films of 1914
List of American films of 1915
List of American films of 1916
List of American films of 1920
List of American films of 1921
List of American films of 1923
List of American films of 1925
List of Film Booking Offices of America films

1872 births
1933 deaths
American male film actors
Film directors from New York City
American male silent film actors
20th-century American male actors
Silent film directors
Columbia College (New York) alumni


Citing increased competition in the industry, Fort James Corp. has announced the July 1 closure of its specialty chemical division in Camas. The closure will impact 23 employees.
Workers will be given the choice of accepting a comparable position within James River's Camas pulp and paper mill or a severance package. The company has promised that existing mill workers will not be displaced by incoming chemical division workers. Russ McCollister, mill manager, also conjectured that increased operating costs for the chemical plant may have forced the company's hand. The 23 employees make up about 1.5 percent of the total Camas operation workforce.


Why the Genesis II Church was established.
It was established to allow people to practice their God-given right to control their own health. Just as a person can go into a Church for protection for political asylum, so we have protection in the Genesis II Church to protect us health wise to take our health sacraments to cleanse our bodies. Could you imagine any government trying to stop any Church from taking their sacraments which they believe are sacred?
We believe our health is sacred and it is our God given right to protect our temples, which are our bodies. Anyone is welcome in the Genesis II Church no matter what beliefs they may have because it is about health not religion. We are a non-religious Church accepting any and all people of the world. It is not about any "one" natural "sacrament" but "all" that is natural that can help the body stay healthy.
Churches (at least those that do not sign up to the government for various tax incentives), have a whole range of freedoms not enjoyed by businesses or companies.
The 'church' protects members from political persecution in sharing the health benefits of MMS and other natural products.


Every year there is the Wima tour at the end of the season.
Some of us finish their season in October, some don't, but of course everyone wants to participate.
But Wima is growing and with it it gets more difficult to bring so many together for one date. The survey on Doodle didn't help in this respect and so the idea was born to make two final trips.
This time the route led us to the northern Weinviertel, and should actually also reach a bit into the Czech Republic, but it was shortened a bit due to the temperatures. Similar to the Waldviertel, there are still small villages and paths here, just waiting to be discovered and used.
Our troop, reduced around sickness rates, starts with still fresh 10° temperature and increases, slowly same as the airstream, also to temperature of 16-17°.
But we are well packed except for our fingers and thus the fun remains in the sun, the ride and the small places that our guide conjures out of the corner work of the streets.
On the way back to Vienna we also stop for a short coffee break, then we pass two motocross tracks (where there was a lot of activity) and head south back to Vienna.
The crowning finish: The crossing of the Danube and the sun in the water.


I have a really boring job.
My main daily task right now is listing factory return merchandise on eBay. Recently the title of manager has fallen on me, but all that really means is I tell other people to list stuff too.
So I have a boring job. But that entails the responsibility to keep myself entertained, lest I run out on to Highway 65 just to make something interesting happen.
My most tried and true method of avoiding that is listening to music and podcasts. The music can range from 1930s recordings of bluegrass, to 90s post-rock, to modern Japanese dream pop. The podcasts range from high-minded philosophy lectures, to celebrity scandal updates, to two British guys speculating about absurd movie plots Hollywood would never make. Basically I listen to whatever my media outlets promote to me and piques my interest at the time.
But all that media consumption, plus movies and TV shows in my free time, I think has an effect on my memory. I get so lost in others people's lives, music, stories, perspectives, values, and opinions, that I kind of forget my own, and maybe myself in general. That is, until I read something like Psalm 40, and my memory returns to me, like when you open the photo album your mother kept of your childhood, and you're confronted again with the image of what used to be you, a tiny, naked, screaming baby on a hospital scale.
This passage reminds me who I was at one point: a helpless, frequently depressed young man very much in "the slimy pit," "the mud and mire." I was so despondent at times I wouldn't even have the interest in consuming any media at all.
But I remember Psalm 40 being quoted in a book on depression and the Christian life that in part helped me find my mental health, finding hope and meaning in the image of Jesus taking up his cross. This passage, an ethereal photo album, perhaps a kind of spiritual media, imbues upon consumption a centering, life-giving knowledge. It's a reminder of the wonders God has done, a picture of Him lifting me out of the pit and giving me a firm place to stand among the people of the light, the Body of Christ.
So as we wait patiently for you Lord, give us this day our daily bread for the Body's healthful consuming, and lead us not, in our boring jobs, into temptation to forget where we came from.


text:
An Early Father's Day Gift
by Seth Daniel • June 18, 2015 • 0 Comments
By a stroke of luck, Erin Lewis forgot part of her dance costume last Wednesday afternoon – causing her to go back in the house and find her grandfather, Jim Lewis, choking and near death.
Her find triggered what the family is calling the best Father's Day gift anyone could give a father – a life saved and another chance to live.
When Erin found her grandfather hunched over in the bathroom, choking on his dentures – which had broken in half and slipped down his trachea – she called out as loud as she could for her father, Danny Lewis.
Danny had been outside with his son, Matthew Lewis, playing catch and waiting for Erin to get her things.
Danny rushed to action and went inside.
"Danny came running to find his dad chocking," said his mother, Suzanne Lewis. "He performed such heroic efforts without even thinking – initiating CPR and doing mouth-to-mouth resuscitation. However, the biggest thing he did was to reach into Jim's throat and remove the dentures. All this time, Jim was breathing, but wasn't responding and was turning blue. His eyes were rolling back in his head."
Jim – in writing – said he is incredibly thankful for the early Father's Day gift his son gave him last week.
"The ambulance was just trying to keep me alive and we went to the Whidden, but it was so serious that they changed course and headed to the MGH in Boston," he wrote. "The paramedics congratulated my son for doing such a wonderful job and the doctors said that I probably survived because of my son's quick help. They would have needed to do a tracheotomy, but they don't think I would have made it alive to the MGH if not for my son."
Lewis said he was also grateful to the Revere Fire Department and Cataldo Ambulance for their quick actions and lifesaving efforts.
In another nod to Father's Day, he wrote that he would like to thank his other son, Eddy, for taking care of him.
"I'm just so thankful for everyone after all of this," he wrote. "I also on this Father's Day want to thank my other son, Eddy, for his true devotion to me and always being there when I needed him. This whole incident has really put life into perspective and shown me how much my son's love and care for me."
← Police Briefs 06-17-2015
Anzuoni to Receive Award From Regional Housing Board →


text:
The 90's, episode 402: Getting Older
Episode 402 of the award winning series, The 90's. This episode is called "GETTING OLDER" and features the following segments:
02:15Copy video clip URL "One to One" by Erna Wine Maurer. "The Singing Ukeleles," a senior citizen musical group, perform and talk to a group of high school students. One man says, "We must never lose the opportunity to communicate. I'm sure we have a lot more in common than we realize." A girl with her hair dyed pink comments, "We're supposed to be respectful toward you, and I am; but, when you talk about war and all you have left us… You haven't left us with very much." A man responds, "I almost said the identical words to my father when I was her age. Every generation has felt they have inherited problems."
04:59Copy video clip URL "Taxi Driver" by Skip Blumberg. Skip Blumberg and a cab driver in New York talk about how old they each felt at different ages in their lives. Skip: "When I was 10, I felt like 12. When I was 20, I felt like 25. When I was 30, I felt like 25. Twenty-five lasted a long time."
05:59Copy video clip URL "Chicago Kids" by Tom Weinberg and Patrick Creadon. Inner-city kids in Chicago talk about the best age to be. One girl replies, "Thirteen. Then you can do more things. When you grow up some people be on drugs and beat their kids a lot. Then the state has to take them away. That's why I like to be young."
07:36Copy video clip URL "William Strauss" by Eddie Becker. William Strauss, author of Generations, comments on how Baby Boomers have grown up in an age where he government is more concerned with the elderly than with the youth, "In order to continue progress, you want to be kindest of all to your future. You want to care about children first. We were doing jut the opposite. It was terrible. It's not that being kind to seniors isn't kind and good. I can't accept that it didn't come as a conscious social choice to ignore the future."
08:45Copy video clip URL "I Wish I Were a Princess" by Terry Strauss / Coleman Advocates. Crystal, a young girl who grew up homeless in San Francisco's Tenderloin, remembers what her life used to be like: "My mom was gone for a long time at night hustling money. She wore mini-skirts and tight shirts. She didn't always get arrested, but sometimes she did. My mom was in jail… and we couldn't touch her." Crystal on the day she was adopted: "It felt good… I was for sure not sad then."
11:01Copy video clip URL "Hannah and Rachel" by Jeff Spitz. Hannah Joravsky, a 3-year-old, is on her way to the hospital to meet her new sister, Rachel. At the hospital, she demonstrates how big her mother looked when she was pregnant. She gets very excited: "I pee-peed, but that's okay… That's okay, Daddy can clean it up … Hannah holds her new sister and in response to the suggestion that "she's beautiful," Hannah answers, "She's pink."
13:53Copy video clip URL "Brady Boomers" by Alene Richardson and Beverly Ginsburg. Over home movies, people in blue boxes a la "The Brady Bunch," respond to questions about the show that shaped a generation. In response to the question "was your family like the Brady Bunch?," one guy says, "My father was a communist and my mother was a sexually fixated neurotic." In answering the question, "did you want your family to be more like the "'Brady Bunch'?," responses included, "I had fantasies… It never happened" and "I think I'll take a real family over what I saw on 'The Brady Bunch' and I didn't like 'The Partridge Family' either."
15:28Copy video clip URL "Real Live Brady Bunch" by Skip Blumberg. Julie Phillips, a writer, says, "We all watched the same episodes of 'The Brady Bunch'; people of the same age and the same generation, and so we all feel as though we accomplished something together, done something together. When in fact, we were all spoon fed the same crap. It helps us to relate to each other, but that doesn't make it good." Jill and Faith Soloway, the co-creators of the off-Broadway hit "The Real Live Brady Bunch" talk about the play and their aspirations. Jill says, "A lot of people have had bad feelings: A play about 'The Brady Bunch'? How stupid. But the play kind of makes fun of 'The Brady Bunch'." Members of the cast introduce themselves. Julie Phillips, the anti-nostalgia voice, and Jill Soloway, the resurrector of schlock TV, engage in a mock boxing match.
20:03Copy video clip URL "Red M & M's" by Bianca Miller. Singer Bianca Miller laments the loss of her favorite things: "I used to love red M & M's until they said that they could kill me / Red dye number 2, I love you / And speaking of carcinogenics / Whatever happened to cyclamates / That they put in Fresca back in '68…"
22:39Copy video clip URL "Older Overnight" by Gary Glaser / The Selluloid Group. A teenage-mother describes how hard it is to bring up a child: "Everything I do I have to think of him first… Being a parent is really hard… It looks fun on the outside, but not on the inside."
25:20Copy video clip URL "Mary Ellen Serritella" by Judy Markey. In Skokie, Illinois, Mary Ellen Serritella talks about taking care of her elderly mother. "It certainly isn't perfect. It certainly isn't good all the time. I don't know what else to do."
29:13Copy video clip URL "Gaston" by Eric Boutry. In Paris, Gaston, a 97-year-old man, performs on the trapeze. His trainer recounts the first time he met the agile senior citizen.
31:27Copy video clip URL "Rix Bears" by Skip Blumberg. In Upstate New York, Albert Rix, 72, trains bears. Despite his age, he doesn't plan on slowing down. The bears whistle and stick their tongues out on command.
34:15Copy video clip URL "Stop me before I love again" by Betty Aberlin / Society of Late Blooming Flowers. Clearance Blouse (a.k.a. Betty Aberlin) reveals the state of her love life. "Stop me before I love again… Sometimes, I think my true love died in Vietnam… The available guys are scarce and the unavailable guys are a hassle… That's what I really like to be – needed – to find someone that has more problems than I have… It makes me feel so together… Last night I heard this bump, and there was this guy laying right in the middle of the street. He'd been hit by a truck… I ran out in the street and here was this beautiful guy… His nose was filling up with blood… He was wearing these exquisite cow boy boots — sea snake. At first I thought he was, you know, gay… I kept talking to him… Then I realized he was dead. I've gone out with some pretty dysfunctional guys, but I've got to draw the line at dead."
37:29Copy video clip URL "Libido" by Liz Cane. Over film footage of couples dancing and a Sierra Club excursion, senior citizens talk about their sex lives… "We have excellent activities, so we both experience orgasm."
41:54Copy video clip URL "Looking Young" by Tobe Carey and Meg Carey; also "Linda Burnham" by Esti Galili Marpet. To be gray or to dye is the question. Meg Carey dyes her hair to hide the gray: "It makes me feel younger when I'm done, it makes me feel older that I'm doing it." On the other side of the coin, Linda Burnham keeps her hair long and gray: "You can be gray, but you can still be youthful and contemporary in your approach to life."
45:29Copy video clip URL "Skateboard Mama" by Marilyn Cohen and Genie Lyons. Liz Bevington, a senior citizen, skateboards along the boardwalk in Venice Beach. "After you fall down, you get up and go again," she says.
46:40Copy video clip URL "Willard Scott" by Eddie Becker. Willard Scott of "The Today Show" tapes his birthday segment in Washington DC and then tells Eddie Becker that he gets 80-150 birthday requests a day from centenarians. He says that by 2000, there will be 100,000 centenarians in the US, making them the largest growing group in the country and perhaps the world.
47:49Copy video clip URL "My Name is Stanley Newman" by Jeffrey L. Davidson. Over film of his daily rituals and archive footage, Stanley Newman recounts his life, "I didn't struggle all my life, but I didn't have it easy… I've outlived my time as it is. I lived longer than I wanted to. Every day I go on makes it longer. I don't know what to do without television. I've seen every show on TV until I'm blue in the face. They're developing new medicines. Why make 'em live? Eighty-five years old is well above average. You're in no condition to enjoy life. They're making people live through pain and troubles. They'd be better off if they were dead."
53:34Copy video clip URL "Derek Humphry" by Jody Procter and Kit Sibert. Derek Humphry, the author of Final Exit, discusses how his bestselling book has opened up the doors for frank discussion about suicide.
55:26Copy video clip URL "Jack and Rose Nathanson" by Prairie Grass Productions. Sitting on a couch with his wife Rose, Jack Nathanson says, "You ask me what I get out of life: sweet and sour. We had our sweet days, our good days, and we had our hard days. If you expect that you're gonna go through life and everything's gonna be sweet apple pie, you're mistaken." With Rose's prompting, he then breaks into song.
57:17Copy video clip URL End Credits.
executive producer, Tom Weinberg; producer, Joel Cohen; program producer, Jeff Spitz; 90s video correspondents, Appalshop, Eddie Becker, Skip Blumberg, Nancy Cain, Andrew Jones, Robbie Leppzer, Esti Galili Marpet, Jim Mulryan; "Cab Driver," "Real Live Brady Bunch" and "Rix Bears" by Skip Blumberg; "Hannah & Rachel" by Jeff Spitz; "Red M&Ms" words and music by Bianca "Bob" Miller; "Mary Ellen Serritella" by Judy Markey; "Stop Me Before I Love Again" by Betty Aberlin, Society for Late Blooming Flowers; "Looking Young" by Tobe and Meg Carey; "Linda Burnham" by Esti Galili Marpet; "Jack Nathanson," from "20th Century" by Prairie Grass Productions; "William Strauss" and "Willard Scott" by Eddie Becker; "Derek Humphry" by Jody Procter and Kit Sibert; "Closing Credits" by Joel Gold and Maxi Cohen; outreach producer, Dee Dee Halleck; chief bureaucrat, John Schwartz; production administrator, Robyn Hensel; assistant executive producer, Patrick Creadon; assistant producers, Andrea Be and Brian Strause; business affairs, Eric Kramer; money man, Tony Judge; production assistant, Michael Maheras; 90's West, Nancy Cain, Chief, Judith Binder and Jody Proctor; Voice of THE 90's, Ricki Katz and Anna Weinberg; major collaborator, Scott Jacobs; video production, Patrick Creadon and Tom Vlodek; title music, Gary Klaff; additional music, Alan Schulman, John Anderson and Mark Weinstein
original graphics, Independent Programming Associates and Rich DuCasse; "Albert," computer animation by Mark Stephen Pierce; off-line editing, Center for New Television and John Grod; on-line editor, Paul Thornton; post-production audio, James Guthrie; electronic graphics, Barbara E. Allen; special thanks, Robert J. Aherns, Della Barnett, Dottie Spitz, Dave Sanford and C.Y.C.L.E.; executives in charge of production, for KBDI Diane Markrow, for WTTW C. Patterson Denny; dedicated to the memory of Leo A. Goldstein, 1890-1991; a presentation of KBDI / Denver and WTTW / Chicago; copyright MCMXCII Fund for Innovative TV, all rights reserved
American Way, Home movie, THE 90's, Viewers Choice
Joel Cohen, Tom Weinberg