[opencms-dev] IMPORT USERS FROM EXTERNAL DATABASE TO OPENCMS

Ruben Martín ruben.martin.ramos at gmail.com
Thu Apr 8 14:26:40 CEST 2010


Thank you very much

I will try with this...but it is very confusing at the moment because I have
to adapt an schema of a data base with opencms tables with users...this is a
good idea.

Yours faithfully

ruben

2010/4/8 Vahe Momjian <m_vahe at yahoo.com>

> Hello
>
> I have had a situation like this las year, I needed to import users to
> Newsletter subscription from external XML file.
>
> Look into this source , I could help you
>
> import org.openuri.fdadEmailSubscribers.impl.RootDocumentImpl;
> import org.openuri.fdadEmailSubscribers.SubscriberDocument;
> import org.apache.xmlbeans.XmlException;
> import org.apache.xmlbeans.XmlObject;
> import org.opencms.file.CmsUser;
> import org.opencms.file.CmsObject;
> import org.opencms.main.CmsException;
> import org.opencms.main.OpenCms;
> import org.opencms.jsp.CmsJspActionElement;
> import org.opencms.util.CmsStringUtil;
>
> import java.io.File;
> import java.io.IOException;
> import java.util.Locale;
> import java.util.Collections;
>
> import com.alkacon.opencms.newsletter.CmsNewsletterManager;
>
> import javax.servlet.jsp.JspWriter;
>
> /**
>  * Created by IntelliJ IDEA.
>  * User: Vahe Momjyan
>  * Date: 03.09.2009
>  * Time: 16:55:14
>  */
> public class CmsNewsletterUserImport {
>
>     /**
>      * The admin CmsObject that is used for user/group operations.
>      */
>     private CmsObject m_adminCms;
>
>     /**
>      * The name of the newsletter module.
>      */
>     public static final String MODULE_NAME =
> CmsNewsletterManager.class.getPackage().getName();
>
>     /**
>      * The default password for all newsletter users, can/should be
> overwritten in the module parameter.
>      */
>     private static final String PASSWORD_USER = "Uw82-Qn!";
>
>      /**
>      * The full name of newletter subscription mailing list.
>      */
>     private static final String NESLETTER_OFQN = "nl_Newsletter/Mailing
> List";
>
>
>     public CmsNewsletterUserImport(CmsJspActionElement jsp) {
>         this.m_adminCms = jsp.getCmsObject();
>
>     }
>
>
>     protected CmsUser createNewsletterUser(String email, String groupName,
> boolean activate, Locale locale) {
>
>         CmsUser user = null;
>         // create additional infos containing the active flag set to passed
> parameter
>
>         try {
>             String ouFqn = getAdminCms().readGroup(groupName).getOuFqn();
>             try {
>                 // first try to read the user
>                 user = getAdminCms().readUser(ouFqn + email);
>             } catch (CmsException e) {
>                 // user does not exist
>             }
>             if (user == null) {
>                 // create the user with additional infos
>                 user = getAdminCms().createUser(
>                         ouFqn + email,
>                         getPassword(),
>                         "Alkacon OpenCms Newsletter",
>                         Collections.EMPTY_MAP);
>                 // set the users email address
>                 user.setEmail(email);
>                 if (!activate) {
>                     // set the additional info as marker that the new user
> is currently not active at all
>
>  user.setAdditionalInfo(CmsNewsletterManager.USER_ADDITIONALINFO_ACTIVE,
> Boolean.FALSE);
>                 }
>             } else {
>                 Object o =
> user.getAdditionalInfo(CmsNewsletterManager.USER_ADDITIONALINFO_ACTIVE +
> groupName);
>                 if (o != null) {
>                     // user tried to subscribe to this mailing list group
> before, return null to show error message
>                     return null;
>                 }
>             }
>
>  user.setAdditionalInfo(CmsNewsletterManager.USER_ADDITIONALINFO_ACTIVE +
> groupName, Boolean.valueOf(activate));
>             user.setAdditionalInfo("Language", locale.getLanguage());
>             if (activate &&
> user.getAdditionalInfo().get(CmsNewsletterManager.USER_ADDITIONALINFO_ACTIVE)
> != null) {
>                 // remove flag that this user is not active at all
>
>  user.deleteAdditionalInfo(CmsNewsletterManager.USER_ADDITIONALINFO_ACTIVE);
>             }
>             // write the user
>             getAdminCms().writeUser(user);
>             // add the user to the given mailing list group
>             getAdminCms().addUserToGroup(user.getName(), groupName);
>         } catch (CmsException e) {
>             // error creating user or modifying user
>         }
>         return user;
>     }
>
>     /**
>      * Returns the admin CmsObject that is used for user/group
> operations.<p>
>      *
>      * @return the admin CmsObject that is used for user/group operations
>      */
>     private CmsObject getAdminCms() {
>
>         return m_adminCms;
>     }
>
>     /**
>      * Returns the password to use for all newsletter users.<p>
>      *
>      * @return the password to use for all newsletter users
>      */
>     public static String getPassword() {
>
>         return
> OpenCms.getModuleManager().getModule(CmsNewsletterManager.MODULE_NAME).getParameter(CmsNewsletterManager.MODULE_PARAM_PASSWORD_USER,
> PASSWORD_USER);
>     }
>
>     public void ImportUsersFromXML(String xmlfilename, JspWriter out)
> throws XmlException, IOException {
>         // Input XML
>         File xmlFile = new File(xmlfilename);
>
>         // Bind the instance to the generated XMLBeans type.
>         RootDocumentImpl document = null;
>
>         document = (RootDocumentImpl) XmlObject.Factory.parse(xmlFile);
>
>         int counter = 0;
>         SubscriberDocument.Subscriber[] allNewSubscribers =
> document.getRoot().getSubscriberArray();
>
>         //get default locale
>         Locale defLocale =
> OpenCms.getWorkplaceManager().getDefaultLocale();
>         for (SubscriberDocument.Subscriber each : allNewSubscribers) {
>
>             if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(each.getEmail()))
> {
>                 createNewsletterUser(each.getEmail(), NESLETTER_OFQN, true,
> defLocale);
>                 counter++;
>             }
>             else
>             {
>                 out.write("User not imported<BR><b>" + each.getEmail() +
> "</b><br>");
>             }
>         }
>         out.write("Total users imported: " + counter);
>     }
> }
>
> ------------------------------
> *From:* Ruben Martín <ruben.martin.ramos at gmail.com>
> *To:* opencms-dev at opencms.org
> *Sent:* Thu, April 8, 2010 1:22:00 PM
> *Subject:* [opencms-dev] IMPORT USERS FROM EXTERNAL DATABASE TO OPENCMS
>
> Hi guys ,
>
> Is There any way of import users from an external database and mapping to
> the fields of the OAMP register module fields ? We could use LDAP but it is
> mandatory to import every data of the users into the opencms.
>
> Is there any way ?
>
> Thanks in advance
>
>
>
>
>
> _______________________________________________
> This mail is sent to you from the opencms-dev mailing list
> To change your list options, or to unsubscribe from the list, please visit
> http://lists.opencms.org/mailman/listinfo/opencms-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://webmail.opencms.org/pipermail/opencms-dev/attachments/20100408/27c916e7/attachment.htm>


More information about the opencms-dev mailing list