// Path: src/main/java/com/liferay/support/tools/common/DummyGenerator.java
// public abstract class DummyGenerator<T extends ParamContext> {
// 
// 	/**
// 	 * Get Context
// 	 *
// 	 * @param request
// 	 * @return
// 	 */
// 	protected abstract T getContext(ActionRequest request) throws Exception;
// 
// 	/**
// 	 * Create Dummy data
// 	 *
// 	 * @param request
// 	 * @throws Exception
// 	 */
// 	public void create(ActionRequest request) throws Exception {
// 
// 		T paramContext = getContext(request);
// 
//         if(!validate(paramContext)) {
//             throw new Exception("Validation Error");
//         }
// 
// 		ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
// 		ServiceContext serviceContext = ServiceContextFactory.getInstance(Group.class.getName(), request);
// 
// 		paramContext.setThemeDisplay(themeDisplay);
// 		paramContext.setServiceContext(serviceContext);
// 
// 		TimeKeeper timeKeeper = new TimeKeeper();
// 		timeKeeper.start();
// 
// 		// Execute creation process
// 		exec(request, paramContext);
// 		
// 		timeKeeper.stop();
// 		timeKeeper.outputTime();
// 	}
// 
// 	/**
// 	 * Validation
// 	 *
// 	 * @param paramContext
// 	 * @return boolean
//      */
// 	protected boolean validate(T paramContext) {
// 		return true;
// 	}
// 
// 	/**
// 	 * Exec data
// 	 *
// 	 * @param paramContext
// 	 */
// 	protected abstract void exec(ActionRequest request, T paramContext) throws Exception;
// }
// 
// Path: src/main/java/com/liferay/support/tools/utils/ProgressManager.java
// public class ProgressManager {
// 
// 	private double _loader = 1;
// 	private ProgressTracker _progressTracker;
// 	private int _threshold = 100;
// 	private ActionRequest _request;
// 	private long _sleep = 1500;
// 
// 	/**
// 	 * Start Progress
// 	 * 
// 	 * @param request    ActionRequest
// 	 * @param loaderInit
// 	 */
// 	public void start(ActionRequest request) {
// 		_request = request;
// 
// 		String commonProgressId = ParamUtil.getString(request, LDFPortletKeys.COMMON_PROGRESS_ID,
// 				LDFPortletKeys.COMMON_PROGRESS_ID);
// 
// 		// Tracking progress start
// 		_progressTracker = new ProgressTracker(commonProgressId);
// 		ProgressTrackerThreadLocal.setProgressTracker(_progressTracker);
// 		_progressTracker.start(request);
// 
// 	}
// 
// 	public int getThreshold() {
// 		return _threshold;
// 	}
// 
// 	public void setThreshold(int threshold) {
// 		_threshold = threshold;
// 	}
// 
// 	/**
// 	 * Calcluate the percentage of prgress
// 	 * 
// 	 * @param index
// 	 * @param numberOfTotal
// 	 * @return percentage of progress by int
// 	 */
// 	public int percentageCalcluation(long index, long numberOfTotal) {
// 		
// 		if(numberOfTotal <= 0) {
// 			return 0;
// 		}
// 		
// 		double dIndex  = (double)index;
// 		double dNumberOfTotal = (double)numberOfTotal;
// 		
// 		int result = (int)(dIndex / dNumberOfTotal * 100.00);
// 		
// 		return (_threshold <= result) ? _threshold : result;
// 	}
// 	
// 	/**
// 	 * Tracking progress
// 	 * 
// 	 * @param index         Index of loop
// 	 * @param numberOfTotal Total number
// 	 */
// 	public void trackProgress(long index, long numberOfTotal) {
// 		if(null != _progressTracker ) {
// 			_loader = percentageCalcluation(index, numberOfTotal);
// 			System.out.println("Creating..." + (int) _loader + "% done");
// 			_progressTracker.setPercent((int)_loader);
// 		}
// 	}
// 
// 	/**
// 	 * Finish progress bar
// 	 */
// 	public void finish() {
// 		try {
// 			// Progress bar doesn't hit if finish right away.
// 			Thread.sleep(_sleep);
// 		} catch (InterruptedException e) {
// 			e.printStackTrace();
// 		}
// 		_progressTracker.finish(_request);
// 	}
// 
// }


import com.liferay.portal.kernel.exception.GroupFriendlyURLException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.model.User;
import com.liferay.portal.kernel.util.StringBundler;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.sites.kernel.util.SitesUtil;
import com.liferay.support.tools.common.DummyGenerator;
import com.liferay.support.tools.utils.ProgressManager;
import javax.portlet.ActionRequest;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;

package com.liferay.support.tools.user;




/**
 * User Generator
 * 
 * @author Yasuyuki Takeo
 *
 */
@Component(immediate = true, service = UserDefaultDummyGenerator.class)
public class UserDefaultDummyGenerator extends DummyGenerator<UserContext> {

	@Override
	protected UserContext getContext(ActionRequest request)
		throws Exception {

		return new UserContext(request);
	}

	@Override
	protected void exec(ActionRequest request, UserContext paramContext)
		throws Exception {

		// Tracking progress start
// Path: src/main/java/com/liferay/support/tools/common/DummyGenerator.java
// public abstract class DummyGenerator<T extends ParamContext> {
// 
// 	/**
// 	 * Get Context
// 	 *
// 	 * @param request
// 	 * @return
// 	 */
// 	protected abstract T getContext(ActionRequest request) throws Exception;
// 
// 	/**
// 	 * Create Dummy data
// 	 *
// 	 * @param request
// 	 * @throws Exception
// 	 */
// 	public void create(ActionRequest request) throws Exception {
// 
// 		T paramContext = getContext(request);
// 
//         if(!validate(paramContext)) {
//             throw new Exception("Validation Error");
//         }
// 
// 		ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
// 		ServiceContext serviceContext = ServiceContextFactory.getInstance(Group.class.getName(), request);
// 
// 		paramContext.setThemeDisplay(themeDisplay);
// 		paramContext.setServiceContext(serviceContext);
// 
// 		TimeKeeper timeKeeper = new TimeKeeper();
// 		timeKeeper.start();
// 
// 		// Execute creation process
// 		exec(request, paramContext);
// 		
// 		timeKeeper.stop();
// 		timeKeeper.outputTime();
// 	}
// 
// 	/**
// 	 * Validation
// 	 *
// 	 * @param paramContext
// 	 * @return boolean
//      */
// 	protected boolean validate(T paramContext) {
// 		return true;
// 	}
// 
// 	/**
// 	 * Exec data
// 	 *
// 	 * @param paramContext
// 	 */
// 	protected abstract void exec(ActionRequest request, T paramContext) throws Exception;
// }
// 
// Path: src/main/java/com/liferay/support/tools/utils/ProgressManager.java
// public class ProgressManager {
// 
// 	private double _loader = 1;
// 	private ProgressTracker _progressTracker;
// 	private int _threshold = 100;
// 	private ActionRequest _request;
// 	private long _sleep = 1500;
// 
// 	/**
// 	 * Start Progress
// 	 * 
// 	 * @param request    ActionRequest
// 	 * @param loaderInit
// 	 */
// 	public void start(ActionRequest request) {
// 		_request = request;
// 
// 		String commonProgressId = ParamUtil.getString(request, LDFPortletKeys.COMMON_PROGRESS_ID,
// 				LDFPortletKeys.COMMON_PROGRESS_ID);
// 
// 		// Tracking progress start
// 		_progressTracker = new ProgressTracker(commonProgressId);
// 		ProgressTrackerThreadLocal.setProgressTracker(_progressTracker);
// 		_progressTracker.start(request);
// 
// 	}
// 
// 	public int getThreshold() {
// 		return _threshold;
// 	}
// 
// 	public void setThreshold(int threshold) {
// 		_threshold = threshold;
// 	}
// 
// 	/**
// 	 * Calcluate the percentage of prgress
// 	 * 
// 	 * @param index
// 	 * @param numberOfTotal
// 	 * @return percentage of progress by int
// 	 */
// 	public int percentageCalcluation(long index, long numberOfTotal) {
// 		
// 		if(numberOfTotal <= 0) {
// 			return 0;
// 		}
// 		
// 		double dIndex  = (double)index;
// 		double dNumberOfTotal = (double)numberOfTotal;
// 		
// 		int result = (int)(dIndex / dNumberOfTotal * 100.00);
// 		
// 		return (_threshold <= result) ? _threshold : result;
// 	}
// 	
// 	/**
// 	 * Tracking progress
// 	 * 
// 	 * @param index         Index of loop
// 	 * @param numberOfTotal Total number
// 	 */
// 	public void trackProgress(long index, long numberOfTotal) {
// 		if(null != _progressTracker ) {
// 			_loader = percentageCalcluation(index, numberOfTotal);
// 			System.out.println("Creating..." + (int) _loader + "% done");
// 			_progressTracker.setPercent((int)_loader);
// 		}
// 	}
// 
// 	/**
// 	 * Finish progress bar
// 	 */
// 	public void finish() {
// 		try {
// 			// Progress bar doesn't hit if finish right away.
// 			Thread.sleep(_sleep);
// 		} catch (InterruptedException e) {
// 			e.printStackTrace();
// 		}
// 		_progressTracker.finish(_request);
// 	}
// 
// }


// Path: src/main/java/com/liferay/support/tools/user/UserDefaultDummyGenerator.java
import com.liferay.portal.kernel.exception.GroupFriendlyURLException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.model.User;
import com.liferay.portal.kernel.util.StringBundler;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.sites.kernel.util.SitesUtil;
import com.liferay.support.tools.common.DummyGenerator;
import com.liferay.support.tools.utils.ProgressManager;
import javax.portlet.ActionRequest;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;


package com.liferay.support.tools.user;




/**
 * User Generator
 * 
 * @author Yasuyuki Takeo
 *
 */
@Component(immediate = true, service = UserDefaultDummyGenerator.class)
public class UserDefaultDummyGenerator extends DummyGenerator<UserContext> {

	@Override
	protected UserContext getContext(ActionRequest request)
		throws Exception {

		return new UserContext(request);
	}

	@Override
	protected void exec(ActionRequest request, UserContext paramContext)
		throws Exception {

		// Tracking progress start
		ProgressManager progressManager = new ProgressManager();