package er.ajax.mootools.example.components; import java.io.File; import java.io.IOException; import java.util.Random; import com.webobjects.eocontrol.EOEditingContext; import com.webobjects.eocontrol.EOSortOrdering; import com.webobjects.foundation.NSArray; import com.webobjects.foundation.NSMutableArray; import er.extensions.components.ERXLoremIpsumGenerator; import er.extensions.foundation.ERXFileUtilities; public class ExampleDataFactory { private static NSMutableArray<Word> _exampleData; public static NSMutableArray<Word> randomWords(int count) { NSMutableArray<Word> words = new NSMutableArray<Word>(); Random rand = new Random(); for (int i = 0; i < count; i++) { String s = ""; int max = 6 + rand.nextInt(6); for (int j = 0; j < max; j++) { int c = rand.nextInt(26); s += Character.toString((char) ('A' + c)); } Word example = new Word(s); words.addObject(example); } return words; } public static synchronized NSArray<Word> someWords(int count) { NSArray<Word> allWords = allWords(); NSMutableArray<Word> someWords = new NSMutableArray<Word>(); for (int i = 0; i < count; i ++) { someWords.addObject(allWords.objectAtIndex((int)(Math.random() * allWords.count()))); } return someWords; } public static synchronized NSArray<Word> allWords() { // some sample data. if we don't find the file, just create random strings if (_exampleData == null) { _exampleData = new NSMutableArray<Word>(); File f = new File("/usr/share/dict/words"); if (f.exists()) { try { String words = ERXFileUtilities.stringFromFile(f); String splitWords[] = words.split("\\n"); for (int i = 0; i < splitWords.length; i++) { String word = splitWords[i]; // we don't want all words, that just takes too long if (word.length() > 0 && ((i % 20) == 0)) { Word example = new Word(word); _exampleData.addObject(example); } } } catch (IOException e) { System.out.println("ExampleUtils.exampleValues: Can't read " + f + ": " + e); } } if (_exampleData.count() == 0) { _exampleData.addObjectsFromArray(ExampleDataFactory.randomWords(1000)); } EOSortOrdering.sortArrayUsingKeyOrderArray(_exampleData, new NSArray<EOSortOrdering>(EOSortOrdering.sortOrderingWithKey("name", EOSortOrdering.CompareAscending))); } return _exampleData.immutableClone(); } public static NSMutableArray<Product> products(int count) { NSMutableArray<Product> products = new NSMutableArray<Product>(); for (int i = 0; i < count; i++) { String title = ERXLoremIpsumGenerator.words(1, 5); String summary = ERXLoremIpsumGenerator.paragraph(); Product product = new Product(title, summary); products.addObject(product); } return products; } public static NSMutableArray<ComplexPerson> family() { NSMutableArray<ComplexPerson> people = new NSMutableArray<ComplexPerson>(); ComplexPerson mike = new ComplexPerson("Mike", 29); ComplexPerson kirsten = new ComplexPerson("Kirsten", 29); ComplexPerson andrew = new ComplexPerson("Andrew", 2); mike.setSpouse(kirsten); kirsten.setSpouse(mike); mike.setChildren(new NSArray<ComplexPerson>(andrew)); kirsten.setChildren(new NSArray<ComplexPerson>(andrew)); people.add(mike); people.add(kirsten); people.add(andrew); return people; } public static NSArray<Company> companies(EOEditingContext editingContext) { NSArray<Company> companies = Company.fetchAllCompanies(editingContext); if (companies.count() == 0) { Company.createCompany(editingContext, "Company 1"); Company.createCompany(editingContext, "Company 2"); Company.createCompany(editingContext, "Company 3"); Company.createCompany(editingContext, "Company 4"); editingContext.saveChanges(); companies = Company.fetchAllCompanies(editingContext); } return companies; } public static NSMutableArray<Comment> comments(int count) { NSMutableArray<Comment> comments = new NSMutableArray<Comment>(); for (int i = 1; i < count; i++) { Comment comment = new Comment(); comment.setText("This is comment #" + i); comments.addObject(comment); } return comments; } public static NSMutableArray<String> values(String prefix, int count) { NSMutableArray<String> values = new NSMutableArray<String>(); for (int i = 0; i < count; i++) { values.addObject(prefix + i); } return values; } public static NSMutableArray<Item> items(String idSuffix, String prefix, int count) { NSMutableArray<Item> items = new NSMutableArray<Item>(); for (int i = 0; i < count; i++) { items.addObject(new Item(String.valueOf(i) + idSuffix, prefix + i)); } return items; } }