MockPresentationMessage.java

/**
 * The contents of this file are subject to the OpenMRS Public License
 * Version 1.0 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at
 * http://license.openmrs.org
 *
 * Software distributed under the License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 * License for the specific language governing rights and limitations
 * under the License.
 *
 * Copyright (C) OpenMRS, LLC.  All Rights Reserved.
 */
package org.openmrs.messagesource;

import java.util.Arrays;
import java.util.List;
import java.util.Locale;

import org.databene.benerator.Generator;
import org.databene.benerator.factory.GeneratorFactory;

/**
 *
 */
public class MockPresentationMessage extends PresentationMessage {
	
	static String CODE_PATTERN = "[a-z]{4,12}";
	
	static Generator<String> codeGenerator;
	
	static Generator<String> localeGenerator;
	
	static String MESSAGE_PATTERN = "[a-z]*";
	
	static Generator<String> messageGenerator;
	
	static String DESCRIPTION_PATTERN = "[a-z]*";
	
	static Generator<String> descriptionGenerator;
	
	static {
		// create the generators used by the factory
		codeGenerator = GeneratorFactory.getUniqueRegexStringGenerator(CODE_PATTERN, 4, 12, null);
		List<String> possibleLocales = Arrays.asList(new String[] { "en", "fr", "pt", "en_US", "en_UK" });
		localeGenerator = GeneratorFactory.getSampleGenerator(possibleLocales);
		messageGenerator = GeneratorFactory.getUniqueRegexStringGenerator(MESSAGE_PATTERN, 2, 20, null);
		descriptionGenerator = GeneratorFactory.getUniqueRegexStringGenerator(DESCRIPTION_PATTERN, 2, 20, null);
	}
	
	public MockPresentationMessage(String code, Locale locale, String message, String description) {
		super(code, locale, message, description);
	}
	
	/**
	 * Factory method to produce random mocked-up PresentationMessages.
	 * 
	 * @return
	 */
	public static MockPresentationMessage createMockPresentationMessage() {
		
		String code = "mock." + codeGenerator.generate();
		Locale locale = new Locale(localeGenerator.generate());
		String message = messageGenerator.generate();
		String description = "described mockingly as " + descriptionGenerator.generate();
		
		return new MockPresentationMessage(code, locale, message, description);
	}
	
	/**
	 * Auto generated method comment
	 * 
	 * @param string
	 * @return
	 */
	public static MockPresentationMessage createMockPresentationMessage(String localeSpec) {
		return createMockPresentationMessage(new Locale(localeSpec));
	}
	
	/**
	 * Auto generated method comment
	 * 
	 * @param string
	 * @return
	 */
	public static MockPresentationMessage createMockPresentationMessage(Locale forLocale) {
		MockPresentationMessage mockedMessage = createMockPresentationMessage();
		mockedMessage.setLocale(forLocale);
		return mockedMessage;
	}
}