Class MembersCsvImportHandler

    • Field Detail

      • ADMIN_USERS_MEMBER_ACL

        public static final java.lang.String ADMIN_USERS_MEMBER_ACL
        See Also:
        Constant Field Values
      • opUpload

        protected boolean opUpload
      • separator

        protected java.lang.String separator
      • sendEmail

        protected java.lang.String sendEmail
      • hasToSendEmail

        protected boolean hasToSendEmail
      • wsGrpIds

        protected java.lang.String[] wsGrpIds
      • csGrpIds

        protected java.lang.String[] csGrpIds
      • globalGrpIds

        protected java.lang.String[] globalGrpIds
      • gid

        protected java.lang.String gid
      • isGlobalGrpStepReached

        protected boolean isGlobalGrpStepReached
        True only if common groups step was reached.

        When true, user common groups choices must not be "silently modified"

        (default group must not be added for example)

        Since:
        jcms-10.0.6 JCMS-8958
      • dbMembers

        protected java.lang.String dbMembers
        True to store as DBMember.class, false as Member.class.
        Since:
        jcms-8.0.1
      • useDbMembers

        protected boolean useDbMembers
        Same as dbMembers, as boolean.
      • usage

        protected int usage
        The usage to set for members to create.
        By default creates Accounts.
        Since:
        jcms-8.0.1
      • asGuests

        protected boolean asGuests
      • csvFile

        protected java.io.File csvFile
        The uploaded csvFile. May only be set after step 1.
        It is retrieved only when filename is posted (as hidden field).
      • CSV_SEMICOLON_CHAR_SEP

        public static final java.lang.String CSV_SEMICOLON_CHAR_SEP
        See Also:
        Constant Field Values
      • CSV_COMMA_CHAR_SEP

        public static final java.lang.String CSV_COMMA_CHAR_SEP
        See Also:
        Constant Field Values
      • CSV_FILE_HTML_PARAM

        public static final java.lang.String CSV_FILE_HTML_PARAM
        See Also:
        Constant Field Values
      • SEPARATOR_HTML_PARAM

        public static final java.lang.String SEPARATOR_HTML_PARAM
        See Also:
        Constant Field Values
      • SEND_EMAIL_HTML_PARAM

        public static final java.lang.String SEND_EMAIL_HTML_PARAM
        See Also:
        Constant Field Values
      • WS_GROUP_ID_PARAM

        public static final java.lang.String WS_GROUP_ID_PARAM
        See Also:
        Constant Field Values
      • CS_GROUP_ID_PARAM

        public static final java.lang.String CS_GROUP_ID_PARAM
        See Also:
        Constant Field Values
      • GLOBAL_GROUP_ID_PARAM

        public static final java.lang.String GLOBAL_GROUP_ID_PARAM
        See Also:
        Constant Field Values
      • GID_PARAM

        public static final java.lang.String GID_PARAM
        'gid' must be same than parameter added in member list when filtering on a Group.
        Since:
        jcms-10.0.7
        See Also:
        Constant Field Values
      • GLOBAL_GROUP_IDS_FLAG_PARAM

        public static final java.lang.String GLOBAL_GROUP_IDS_FLAG_PARAM
        See Also:
        Constant Field Values
      • IMPORT_TYPE_PARAM

        public static final java.lang.String IMPORT_TYPE_PARAM
        See Also:
        Constant Field Values
      • IMPORT_DONE_REQ_ATTR

        public static final java.lang.String IMPORT_DONE_REQ_ATTR
        See Also:
        Constant Field Values
      • CREATED_IDS_REQ_ATTR

        public static final java.lang.String CREATED_IDS_REQ_ATTR
        See Also:
        Constant Field Values
      • UPDATED_IDS_REQ_ATTR

        public static final java.lang.String UPDATED_IDS_REQ_ATTR
        See Also:
        Constant Field Values
      • EMAIL_SENT_REQ_ATTR

        public static final java.lang.String EMAIL_SENT_REQ_ATTR
        See Also:
        Constant Field Values
      • FORMHANDLER_REQ_ATTR

        public static final java.lang.String FORMHANDLER_REQ_ATTR
        See Also:
        Constant Field Values
      • FILENAME_HTML_PARAM

        protected static final java.lang.String FILENAME_HTML_PARAM
        See Also:
        Constant Field Values
      • startTime

        protected long startTime
        For debug purpose.
      • endTime

        protected long endTime
        For debug purpose.
      • isBlockingError

        protected boolean isBlockingError
        Is there any blocking error during checking the csv file ? Not implemented yet. (No case of blocking error).
      • filename

        protected java.lang.String filename
        Used to pass the fileDoc filename through different steps.
      • memberInfoList

        protected java.util.List<MemberImport> memberInfoList
        The list containing each line.
      • IMPORT_TYPE_ACCOUNT

        public static final java.lang.String IMPORT_TYPE_ACCOUNT
        See Also:
        Constant Field Values
      • IMPORT_TYPE_CONTACT

        public static final java.lang.String IMPORT_TYPE_CONTACT
        See Also:
        Constant Field Values
      • IMPORT_TYPE_GUEST

        public static final java.lang.String IMPORT_TYPE_GUEST
        See Also:
        Constant Field Values
      • collaborativeSpaceClazz

        protected java.lang.Class<? extends Publication> collaborativeSpaceClazz
        The optional Collaborative Space class.
        Since:
        jcms-8
      • collaborativeSpacePluginActive

        protected boolean collaborativeSpacePluginActive
      • collaborativeSpaceInitDone

        protected boolean collaborativeSpaceInitDone
    • Constructor Detail

      • MembersCsvImportHandler

        public MembersCsvImportHandler()
        The default constructor.
        Checks first the actual member limit to avoid member import if limit is already reached.
        Since:
        jcms-8
    • Method Detail

      • init

        protected void init()
        Description copied from class: JcmsFormHandler
        Method to implement if you need to initialize your handler from parameter received, prior to all security validation.

        You must absolutely not perform any action which modify data or site configuration.

        Therefore it is strongly recommend NOT TO implement this method, or use very wisely.

        Overrides:
        init in class JcmsFormHandler
        Since:
        jcms-8
        See Also:
        JcmsFormHandler.init()
      • processAction

        public boolean processAction()
                              throws java.io.IOException
        Performs the import (real or simulation) if a valid CSV file has been uploaded.
        Overrides:
        processAction in class EditDataHandler
        Returns:
        true if import has been performed.
        Throws:
        java.io.IOException - IO Exception
        Since:
        jcms-8
      • getHiddenField

        protected java.lang.String getHiddenField​(java.lang.String htmlName,
                                                  java.io.File csvFile)
        Specific method to put a file relative to JCMS temp dir as hidden modal field.
        Does not encode value, since super.getHiddenField() does it.
        Parameters:
        htmlName - : the HTTP param name.
        csvFile - : the File.
        Returns:
        the hidden input as HTML.
        Since:
        jcms-8
      • validatePrevious

        protected boolean validatePrevious()
                                    throws java.io.IOException
        Overrides:
        validatePrevious in class JcmsFormHandler
        Throws:
        java.io.IOException
        Since:
        jcms-8
      • validateFinish

        protected boolean validateFinish()
                                  throws java.io.IOException
        Overrides:
        validateFinish in class JcmsFormHandler
        Throws:
        java.io.IOException
        Since:
        jcms-8
      • performPrevious

        protected boolean performPrevious()
                                   throws java.io.IOException
        Overrides:
        performPrevious in class JcmsFormHandler
        Throws:
        java.io.IOException
        Since:
        jcms-10.0.1
      • showNextButton

        public boolean showNextButton()
        Description copied from class: JcmsFormHandler
        Check if the "Next" button should be displayed in step modal form.

        The default implementation of this method is to return true unless the finish button is being displayed by method JcmsFormHandler.showFinishButton().

        You can provide a custom FormHandler to override this behavior.

        See jcore/doStepButtons.jspf for use of this method.

        Overrides:
        showNextButton in class JcmsFormHandler
        Returns:
        true to display the "Next" button, false to hide it
        Since:
        jcms-8
      • performCancel

        public boolean performCancel()
                              throws java.io.IOException
        Overrides:
        performCancel in class EditDataHandler
        Throws:
        java.io.IOException
      • showFinishButton

        public boolean showFinishButton()
        Description copied from class: JcmsFormHandler
        Check if the "Finish" button should be displayed in step modal form.

        The default implementation of this method is to return true if the current step (as returned by JcmsFormHandler.getFormStep() is the last one (as compared with JcmsFormHandler.getFormStepCount().

        You can provide a custom FormHandler to override this behavior.

        See jcore/doStepButtons.jspf for use of this method.

        Overrides:
        showFinishButton in class JcmsFormHandler
        Returns:
        true to display the "Finish" button, false to hide it
        Since:
        jcms-8
      • getFormStepHiddenFields

        public java.lang.String getFormStepHiddenFields()
        Stores through different steps the uploaded file path.
        Overrides:
        getFormStepHiddenFields in class JcmsFormHandler
        Returns:
        the uploaded file path.
        Since:
        jcms-8
      • getFormStepCount

        public int getFormStepCount()
        The number of steps is dynamic, is minimum 2, and maximum 4.
        • 1. file
        • 2. verifications and finish
        • 3. (optional) workspaces's groups
        • 4. (optional) collaborative workspaces's groups
        optional steps are only available when importing Members with usage Account.
        Overrides:
        getFormStepCount in class JcmsFormHandler
        Returns:
        the total number of steps in this formhandler
        Since:
        jcms-8
        See Also:
        JcmsFormHandler.getFormStepCount()
      • isCollaborativeSpacePluginAvailable

        protected boolean isCollaborativeSpacePluginAvailable()
        Returns:
        true if CollaborativeSpace plugin is active.
        Since:
        jcms-8
      • validateUpload

        public boolean validateUpload()
                               throws java.io.IOException
        Validates the file format to import.
        Returns:
        true if file is ok.
        Throws:
        java.io.IOException - if an exception occurs while simulating import.
        Since:
        jcms-8.0.1
      • deleteCsvFile

        protected void deleteCsvFile()
        If the file exists, try to delete it.
        This method has to be called each time the csvFile is no more used (eg. return from step 2 to step 1; Error on step 1; last step success; etc...)
        If this method cannot be called (cancel by user, browser closed, ...) then the MultipartFilter will do his job by cleaning the UPLOAD dir at next JCMS restart. (See MultipartFilter.initFileUpload()).
        Since:
        jcms-8
      • isWorkspaceStep

        public boolean isWorkspaceStep()
        Returns weither Workspace step should be displayed.
        Returns:
        true if a valid Workspaces root category has been defined, and the logged member can see at least one workspace under this cat. See getWorkspaceSet().
        Since:
        jcms-8
      • isCollaborativeSpaceStep

        public boolean isCollaborativeSpaceStep()
        Returns:
        true if the current loggedMember can see any Collaborative Space.
        Since:
        jcms-8
      • hasGlobalGroupsStep

        public boolean hasGlobalGroupsStep()
        Returns:
        true if the current loggedMember can see any global groups.
        Since:
        jcms-10.0.5
      • isGlobalGroupsStep

        public boolean isGlobalGroupsStep()
      • getWorkspaceSet

        public java.util.Set<Workspace> getWorkspaceSet()
        Retrieve all the workspaces as a Set, with the following conditions :
        • workspace's getCatSet() is child of "$id.member.csv-import.ws-root-cat" root category.
        • the workspace is not a collaborative space
        • the workspace is not a model
        • the workspace is open
        • the workspace does have at least one group visible by loggedMember
        Returns:
        the ws set.
        Since:
        jcms-8
      • getCollaborativeSpaceSet

        public java.util.Set<Workspace> getCollaborativeSpaceSet()
        Retrieve all the Collaborative workspaces as a Set, with the following conditions :
        • workspace's isCollaborativeSpace() method return true;
        • workspace is open
        • workspace is not a model
        • member belongs to workspace, or collaborative space has public access.
        • the workspace does have at least one group visible by loggedMember
        Returns:
        the ws set.
        Since:
        jcms-8
      • getGlobalGroupSet

        public java.util.Set<Group> getGlobalGroupSet()
      • setDocuments

        public void setDocuments​(java.lang.String[] v)
        Moves the plupload uploaded file to JCMS temp directory in order the uploaded files to be cleaned periodically by JCMS.
        Parameters:
        v - the documents argument from plupload.
        Since:
        jcms-8
      • setOpUpload

        public void setOpUpload​(java.lang.String upload)
        Parameters:
        upload - set the opUpload
        Since:
        jcms-8.0.1
      • getSeparator

        public java.lang.String getSeparator()
        Returns:
        the separator
        Since:
        jcms-8
      • setSeparator

        public void setSeparator​(java.lang.String separator)
        Parameters:
        separator - the separator to set
        Since:
        jcms-8
      • getSendEmail

        public java.lang.String getSendEmail()
        Returns:
        the sendEmail
        Since:
        jcms-8
      • setSendEmail

        public void setSendEmail​(java.lang.String sendEmail)
        Parameters:
        sendEmail - the sendEmail to set
        Since:
        jcms-8
      • hasToSendEmail

        public boolean hasToSendEmail()
        Returns:
        the sendEmail
        Since:
        jcms-8
      • setDbMembers

        public void setDbMembers​(java.lang.String dbMembers)
        Set true to create Member in DataBase.
        False, to create JStore Members.
        Only used for creation, not for updates.
        Parameters:
        dbMembers - the dbMembers to set
        Since:
        jcms-8.0.1
      • useDbMembers

        public boolean useDbMembers()
        Returns:
        Weither to use DBMember or Member class.
        Since:
        jcms-8.0.1
      • getCreateCount

        public int getCreateCount()
        Returns:
        the createCount
        Since:
        jcms-8
      • getUpdateCount

        public int getUpdateCount()
        Returns:
        the updateCount
        Since:
        jcms-8
      • getInvalidCount

        public int getInvalidCount()
        Returns:
        the invalidCount
        Since:
        jcms-8
      • getMemberInfoList

        public java.util.List<MemberImport> getMemberInfoList()
        Returns:
        the memberInfoList
        Since:
        jcms-8
      • isAnyError

        public boolean isAnyError()
        Returns:
        true if the current import manager contains error.
        Since:
        jcms-8
      • getWsGrpIds

        public java.lang.String[] getWsGrpIds()
        Returns:
        the wsGrpIds
        Since:
        jcms-8
      • setWsGrpIds

        public void setWsGrpIds​(java.lang.String[] v)
        Parameters:
        v - the wsGrpIds to set
        Since:
        jcms-8
      • getCsGrpIds

        public java.lang.String[] getCsGrpIds()
        Returns:
        the csGrpIds
        Since:
        jcms-8
      • setCsGrpIds

        public void setCsGrpIds​(java.lang.String[] v)
        Parameters:
        v - the csGrpIds to set
        Since:
        jcms-8
      • getGlobalGrpIds

        public java.lang.String[] getGlobalGrpIds()
        Return common groups selected by user in GUI to add new members to.

        Note: before 10.0.7 (JCMS-9493):
        Automatically adds channel default group by default, only if file validation step was reached, and if common groups step was not reached, when opImport is posted. Since 10.0.7 (JCMS-9493), this no longer happen for guests accounts import.

        Returns:
        the globalGrpIds
        Since:
        jcms-10.0.5
      • setGlobalGrpIds

        public void setGlobalGrpIds​(java.lang.String[] v)
        Parameters:
        v - the globalGrpIds to set
        Since:
        jcms-10.0.5
      • setGlobalGrpIdsFlag

        public void setGlobalGrpIdsFlag​(java.lang.String v)
        A flag to indicate common groups step was reached.

        Note: before 10.0.7 (JCMS-9493):
        When true, selected common groups will not be modified, and will be exactly ones user requested.
        When false, default common groups can be selected by the system. (eg: the channel default Group)
        Since 10.0.7 (JCMS-9493), default group is no longer added to those groups.

        Parameters:
        v - true when step was reached
        Since:
        jcms-10.0.6 JCMS-8958
      • getGid

        public java.lang.String getGid()
      • getGidGroup

        public Group getGidGroup()
      • setGid

        public void setGid​(java.lang.String v)
      • getAllGroupIds

        public java.util.Collection<java.lang.String> getAllGroupIds()
        Returns:
        all the groups members to be added in
        Since:
        jcms-10.0.7
      • setImportType

        public void setImportType​(java.lang.String importType)
        Parameters:
        importType - the type of import
        Since:
        jcms-10.0.5 / JCMS-8503
      • getImportType

        public java.lang.String getImportType()
        Returns:
        tye type of import
        Since:
        jcms-10.0.5 / JCMS-8503
      • getUsage

        public int getUsage()
        Returns:
        the usage (Account or contact) for members to create.
        Since:
        jcms-8.0.1
      • setUsage

        public void setUsage​(int usage)
        Parameters:
        usage - the usage (Account or contact) for members to create to set.
        Since:
        jcms-8.0.1
      • isAccountMode

        public boolean isAccountMode()
        Return true if import mode is Account.
        Returns:
        true if import mode is Account.
        Since:
        jcms-8.0.1
      • isContactMode

        public boolean isContactMode()
        Return true if import mode is Contact.
        Returns:
        true if import mode is Contact.
        Since:
        jcms-8.0.1
      • displayUsageOption

        public boolean displayUsageOption()
        Returns:
        true if option usage must be proposed.
        Since:
        jcms-8.0.1
      • displayGuestOption

        public boolean displayGuestOption()
        Returns:
        true if option import as guests must be proposed.
        Since:
        jcms-10.0.5 / JCMS-8503
      • isGuestMode

        public boolean isGuestMode()
        Returns:
        true if members should be imported as CSP guests.
        Since:
        jcms-10.0.5 / JCMS-8503
      • getGuestGroup

        public Group getGuestGroup()
        Returns:
        the guest group if any
        Since:
        jcms-10.0.5 / JCMS-8503
      • setGuest

        public void setGuest​(java.lang.String v)
        Set weither members have to be imported as guests.
        Parameters:
        v - form parameter
        Since:
        jcms-10.0.5 / JCMS-8503
      • getFilename

        public java.lang.String getFilename()
        Returns:
        the relative filename of the imported file.
        Since:
        jcms-8.0.1
      • setFilename

        public void setFilename​(java.lang.String filename)
        Set the name of the file, previous uploaded in temporary directory on first step, that we must use for CSV import.
        Parameters:
        filename - the filename to set
        Since:
        jcms-8.0.1