Testability Explorer Plugin for Hudson
Writing the Hudson plugin took me almost two months now. There is not so much documentation about plugin creation on the web. I started off by reading through a great tutorial I have found here. This is almost the only documentation I could find. But even with this 7-part tutorial you will still have to do a lot of try-and-error coding. In the tutorial you will learn about Publishers, Reporters and Reporting. But a lot of stuff is not covered. The best approach for new beginners is to read the tutorial and set up your own base code structure accordingly. Then check out all the other existing Hudson plugins and check how other developers solve the same tasks that you will have to accomplish. Luckily for me, one of the busiest plugin developers spoke German, so I could bug him with some personal questions via Email and he helped me out a lot.
In Hudson you can have Freestyle and Maven 2 based projects. Your plugin should support both project types. Unfortunately both project types require different entry points. For Freestyle projects you start by writing a class that derives from the Publisher class. Maven 2 projects require you to write a Reporter class. From there, a big challenge will be to write code that can be re-used for both project types. This is not always easy, as you have to subtype different Interfaces and Classes for Maven 2 and Freestyle projects.
Hudson is using Stapler for rending web output. I have never seen this framework before, so this is another technology you will have to familiarize yourself with when writing a plugin. Hudson is build so that certain methods will be invoked via Stapler on your classes. It was frustrating for me to find out, how these methods had to be called and what signatures were required to put everything to work. For instance, in one of the report classes (AbstractBuildReport) I had to have a method called getDynamic that returned an Object. This Object could be anything that I wanted to visualize in my report details. I found out about this method inly by looking at other plugins, it was neither documented in the tutorial nor somewhere else.
Another black box for me is the Master and Slave thing, that is mentioned in the Tutorial. It was said that some code runs in the Master thread, which is apparently the main thread that Hudson executes in. In my plugin I create a second thread that will parse the Testability Explorer reports. This is according to the tutorial. However, I never had to copy any files back to the Master. Everything worked without that, so I have no clue why this would be needed. The plugin works and I am happy about it. However, I still have this unsatisfying feeling that I did not understand everything correctly and dont know anything about the Hudson internals.
So for those of you planning to write their first Hudson plugin, do not expect so much fun for the first try. Probably a lot of code written in the Testability Explorer plugin I would do differently now, but maybe that is just normal in software development.
Integrate faceted search with Wicket and Guice (Part Three)
MoviePage then, used a private member that is referencing the Facetmap.
@Inject
private Facetmap m_facetmap;
Notice the @Inject annotation from Google Guice. But how does Guice know what to dependency-inject for this? This is defined in a class called MainModule. Modules are the essence of all Guice applications. So if you have something like this in your Module class
protected void configure()
{
bind(Facetmap.class)
.to(MovieFacetmap.class)
.asEagerSingleton();
}
then Guice will use a single instance of the MovieFacetmap class wherever a Facetmap Interface is needed. Let's have a look in the MovieFacetmap again.
MovieFacetmap.java
public class MovieFacetmap extends SimpleFacetmap
{
@Inject
public MovieFacetmap(@Named("movieFacetmapName") String name, ResourceSpace resourceSpace, Properties properties)
{
super(name, resourceSpace, properties);
}
}
Again Guice stuff is present here. The constructor is annotated with @Inject, thereby putting all parameters under Guice control. We need to tell Guice what parameters to send in when calling the MovieFacetmap constructor. This instruction is again done in the configure() method of the MainModule.
bindConstant()
.annotatedWith(Names.named("movieFacetmapName"))
.to("80s Movies");
bind(ResourceSpace.class)
.to(MovieResourceSpace.class)
.asEagerSingleton();
bind(Properties.class)
.toProvider(MovieSelectionPropertyProvider.class)
.asEagerSingleton();
The instruction reads as this for Guice: whenever something is annotated with @Named("movieFacetmapName"), use the String „80s Movies“. Whenever a ResourceSpace type is needed, use a single instance of MovieResourceSpace. Whenever Properties are needed use the MovieSelectionPropertyProvider to get to these Properties. This might not be working in large applications where you have a lot of Properties used everywhere, but it is enough in this small webapplication.
Basically the same guice stuff is used in the MovieResourceSpace constructor.
bind(Map.class)
.annotatedWith(Names.named("movies"))
.to(MovieList.class)
.asEagerSingleton();
Guice Instruction: Whenever a Map interface is annotated with @Named("movies"), use a single instance of MovieList instead. It is very important to use the Singleton scope which Google Guice provides. Otherwise Guice will create a new instance every time a "guiced" object is needed and then the whole system will just not work properly. It is assuming that you have exactly one instance of the Facetmap, ResourceSpace and FacetSpace. Finally this is the full MainModule that you need.
MainModule.java
public class MainModule extends AbstractModule
{
protected void configure()
{
bind(Facetmap.class)
.to(MovieFacetmap.class)
.asEagerSingleton();
bind(Properties.class)
.toProvider(MovieSelectionPropertyProvider.class)
.asEagerSingleton();
bindConstant()
.annotatedWith(Names.named("movieFacetmapName"))
.to("80s Movies");
bind(Map.class)
.annotatedWith(Names.named("movies"))
.to(MovieList.class)
.asEagerSingleton();
bind(ResourceSpace.class)
.to(MovieResourceSpace.class)
.asEagerSingleton();
bind(FacetSpace.class)
.to(MovieFacets.class)
.asEagerSingleton();
}
}
Now that is should be clear, how the Facetmap is injected into the MoviePage for Wicket, let's take a look under the hood. The MoviePage constructor just calls the setupFacetMap method (the name is not quite appropriate I just realized as the Facetmap is already set up). Anyway the method looks like this
private void setupFacetMap(final PageParameters parameters)
{
String ref = parameters.getString(REF_PARAMETER, "");
Facetmap facetmap = m_facetmap;
Selection currentSelection = getCurrentSelection(facetmap, ref);
setupForwardSelections(currentSelection);
setupResources(currentSelection);
}
I am getting a request parameter that Wicket wraps for me into a PageParameters object. The parameter will be abscent in the initial request, so I will set it to an empty String per default. Next step is getting the current Selection object based on the request parameter. If the request parameter is empty or null, I will use the root Selection.
private Selection getCurrentSelection(Facetmap facetmap, String ref)
{
Selection selection;
try
{
selection = StringUtils.isBlank(ref) ? facetmap.getRootSelection() : facetmap.getSelection(ref);
}
catch (InternalException e)
{
throw new RuntimeException("An error occured accessing a Selection.", e);
}
catch (UnknownReferenceException e)
{
throw new RuntimeException("An error occured accessing a Selection.", e);
}
return selection;
}
With the Selection object, it is time to populate the Wicket ListView's with the forward Selection's and the Resources that match the current Selection. A forward Selection is basically a Selection that the user may choose from his current Selection. Any forward Selection that will return at least 1 Resource is considered a valid forward Selection. In part two I wrote about 2 properties that will influence this behaviour. It is possible to make every forward Selection a valid one by setting com.facetmap.Selection.showEmptySelections to true.
/**
* Returns a list of {@link MovieCriteria} objects from the specified Selection.
*/
private ListgetForwardSelections(Selection selection)
{
ListmovieCriterias = new ArrayList ();
int count = selection.getFacetCount();
for (int i = 0; i < count; i++)
{
String facetTitle = extractFacetTitle(selection.getHeadings(i));
Iterator iterator;
try
{
iterator = selection.getForwardSelections(i);
}
catch (InternalException e)
{
throw new RuntimeException("Unable to get forward selections", e);
}
if (iterator != null)
{
List
First get the Facet count from the current Selection, then iterate over the Facets to get the forward Selection's. Perform an inner loop over the forward Selections to get the information that you want to display in the page (matched Movies, display name). All this information is wrapped into two domain classes Option and MovieCriteria. Remember that these domain classes need to be Serializable to work properly with Wicket.
The final step in the MoviePage is showing the Resource's (Movies) that match the current Selection. This is done in the setupResources() method. Everything you need to do is call getResources() on the current Selection and then display the Resources somehow using the Wicket Framework. No big magic happening here. This is the full MoviePage again.
MoviePage.java
public class MoviePage extends WebPage {
private static final long serialVersionUID = 1L;
public static final String REF_PARAMETER = "refId";
@Inject
private Facetmap m_facetmap;
/**
* Will be called by the Wicket framework.
*/
public MoviePage(final PageParameters parameters)
{
setupFacetMap(parameters);
}
/**
* Initializes all Wicket components based on the current selection
* and the (global) {@link Facetmap}.
*/
private void setupFacetMap(final PageParameters parameters)
{
String ref = parameters.getString(REF_PARAMETER, "");
Facetmap facetmap = m_facetmap;
Selection currentSelection = getCurrentSelection(facetmap, ref);
setupForwardSelections(currentSelection);
setupResources(currentSelection);
}
/**
* Initializes all Wicket components based on the current {@link Selection}.
*/
private void setupResources(Selection currentSelection)
{
Listresources = new ArrayList ();
SelectedResourceIterator resourceIterator = null;
try
{
resourceIterator = currentSelection.getResources();
}
catch (InternalException e)
{
throw new RuntimeException("An error occured while getting resources.", e);
}
if (resourceIterator != null)
{
while (resourceIterator.hasNext())
{
Resource resource;
try
{
resource = resourceIterator.next();
resources.add(resource);
}
catch (InternalException e)
{
throw new RuntimeException("An error occured while iterating and adding resources.", e);
}
}
}
ListView resourceList = new ListView("resourceList", resources)
{
@Override
protected void populateItem(ListItem item)
{
Movie movie = (Movie) item.getModelObject();
Label text = new Label("resourceName", movie.getTitle());
item.add(text);
}
};
add(resourceList);
}
/**
* Populates a ListView component based on the given {@link Selection }.
*/
private void setupForwardSelections(Selection currentSelection)
{
Listselections = new ArrayList ();
if (currentSelection != null)
{
selections = getForwardSelections(currentSelection);
}
ListView selectionList = new ListView("facetList", selections)
{
@Override
protected void populateItem(ListItem item)
{
MovieCriteria movieCriteria = (MovieCriteria) item.getModelObject();
String facetName = movieCriteria.getName();
Label facetNameLabel = new Label("facetName", facetName);
facetNameLabel.setRenderBodyOnly(true);
item.add(facetNameLabel);
List
Now for the part that I like most about Apache Wicket - unit testing. No Selenium, no Watir is needed to test Wicket web applications. The framework is shipped with a bunch of testing classes that will work almost like GUI testing. So if it works in your unit test, you know it will work in your browser as well (Layout testing not included of course). Here is my TestNG test for the MoviePage class.
MoviePageTest.java
public class MoviePageTest
{
@Test
public void testRootSelection()
{
WicketTester app = new WicketTester();
app.getApplication().addComponentInstantiationListener(new GuiceComponentInjector(app.getApplication(), new MainModule()));
app.startPage(MoviePage.class);
app.assertRenderedPage(MoviePage.class);
app.assertComponent("facetList", ListView.class);
ListView facetListView = (ListView) app.getComponentFromLastRenderedPage("facetList");
List facets = facetListView.getList();
assertEquals(facets.size(), 5);
ListView genresListView = (ListView) facetListView.get("0:optionList");
assertEquals(genresListView.getList().size(), 3);
ListView boxOfficeGrossListView = (ListView) facetListView.get("1:optionList");
List gross = boxOfficeGrossListView.getList();
assertTrue(gross.isEmpty(), "We should not have box office gross information.");
ListView releaseDateListView = (ListView) facetListView.get("2:optionList");
assertEquals(releaseDateListView.getList().size(), 9);
ListView studiosListView = (ListView) facetListView.get("3:optionList");
assertEquals(studiosListView.getList().size(), 24);
ListView actorsListView = (ListView) facetListView.get("4:optionList");
assertEquals(actorsListView.getList().size(), 450);
MovieList movieList = new MovieList(new MovieFacets());
app.assertComponent("resourceList", ListView.class);
ListView resourceListView = (ListView) app.getComponentFromLastRenderedPage("resourceList");
List resourceList = resourceListView.getList();
assertEquals(resourceList.size(), movieList.size());
}
@Test
public void testDrewBarrymore()
{
testActor("Drew Barrymore", 1);
}
@Test
public void testHarrisonFord()
{
testActor("Harrison Ford", 8);
}
/**
* Queries the {@link MoviePage} with the specified actor and expects the
* given number of movies in the result list.
*
* @param actorName the name of an actor from the MovieList
* @param expectedMovies the number of movies that he or she plays in
*/
private void testActor(final String actorName, final int expectedMovies)
{
WicketTester app = new WicketTester();
app.getApplication().addComponentInstantiationListener(new GuiceComponentInjector(app.getApplication(), new MainModule()));
app.startPage(MoviePage.class);
app.assertRenderedPage(MoviePage.class);
app.assertComponent("facetList", ListView.class);
ListView facetListView = (ListView) app.getComponentFromLastRenderedPage("facetList");
List facets = facetListView.getList();
assertEquals(facets.size(), 5);
ListView actorsListView = (ListView) facetListView.get("4:optionList");
Listoptions = actorsListView.getList();
assertEquals(options.size(), 450);
for (Option option : options)
{
String title = option.getName();
String ref = option.getLink();
if (title.equals(actorName))
{
PageParameters pageParameters = new PageParameters();
pageParameters.add(MoviePage.REF_PARAMETER, ref);
app.startPage(MoviePage.class, pageParameters);
app.assertRenderedPage(MoviePage.class);
app.assertComponent("resourceList", ListView.class);
ListView resourceListView = (ListView) app.getComponentFromLastRenderedPage("resourceList");
List resourceList = resourceListView.getList();
assertEquals(resourceList.size(), expectedMovies, "There should be " + actorName + " movie(s) with " + actorName + "!");
break;
}
}
}
}
I am creating a new WicketTester. This WicketTester is replacing our own WicketApplication class in the test, that is why I have to call addComponentInstantiationListener(..) manually (since I also do it in WicketApplication). With the WicketTester class you essentially get these methods for testing:
startPage – request any WebPage subclass you want to test
assertRenderedPage – assert the WebPage really showed up
assertComponent – make sure the components you have added in your WebPage subclass are really contained
getComponentFromLastRenderedPage – get the component from the WebPage after it was rendered
Each Component then has specific methods to validate their state. For instance the ListView Component has a getList() method, which I use to get me the MovieList in my test. All I have left in the Test, is to assert that there were indeed 450 movies in that list. This is all done in the testRootSelection() method. I have written two additional TestNG test cases, which will verify the use case in which a user has made a forward Selection from the initial request. The two test cases are called testDrewBarrymore() and testHarrisonFord(). I am setting up a PageParameters object for Wicket that will contain the right request parameter to render all movies in which Drew Barrymore and Harrison Ford are playing. There should be 1 movie with Barrymore (E.T. yeehaw) and 8 movies with Ford in the result list. You could easily come up with more complicated scenarios as the forward selections continue from there. For now this test should be just enough.
This concludes the part about Apache Wicket and Google Guice.
Faceted search – Part Two: the Facetmap
The first important bit is the web.xml file.
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>javasplitter</display-name>
<filter>
<filter-name>wicket.filter</filter-name>
<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>javasplitter.web.WicketApplication</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>wicket.filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
The only thing present in this file is the Wicket filter, which is required for all web applications based on Apache Wicket. Nothing special regarding Google Guice is required in here. If we used Spring as our dependency injection provider, there would be additional stuff in the web.xml file. As you can see, the WicketFilter references the applicationClass which is javasplitter.web.WicketApplication. So let's look into this class.
Our WicketApplication class is rather simple too.
WicketApplication.java
package javasplitter.web;
import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.guice.GuiceComponentInjector;
import javasplitter.web.modules.MainModule;
import javasplitter.web.MoviePage;
/**
* Application object for your web application. *
*/
public class WicketApplication extends WebApplication
{
@Override
protected void init()
{
initDependencies();
}
public void initDependencies()
{
addComponentInstantiationListener(new GuiceComponentInjector(this, new MainModule()));
}
public Class getHomePage()
{
return MoviePage.class;
}
}
You add a GuiceComponentInjector in the init method and return a WebPage from the getHomePage() method, which in our case will be the MoviePage. Also when adding the GuiceComponentInjector, you have to specify a Module that defines how you want to wire your dependencies. The module is the main unit in Google Guice and comparable with the applicationContext file in Spring. I will go into the Guice details in the next part, so lets continue with the MoviePage class.
The MoviePage is a typical Wicket WebPage. It ships with two files, MoviePage.java and MoviePage.html.
MoviePage.html
<html>
<head>
<title>Movie Viewer</title>
</head>
<body>
<h1>Movie Viewer</h1>
<br/><br/>
<div>
<div style="float:left">
<table border="0" cellpadding="0" cellspacing="0" width="300" wicket:id="facetList">
<tr bgcolor="burlywood">
<th><span wicket:id="facetName" /></th>
</tr>
<tr wicket:id="optionList">
<td bgcolor="blanchedalmond">
<a href="#" wicket:id="link"><span wicket:id="text">Text</span></a>
</td>
</tr>
<tr><td height="1px"></td></tr>
</table>
<br />
</div>
<div>
<table border="0" cellpadding="0" cellspacing="0" style="margin-left: 10px;" bgcolor="blanchedalmond">
<tr>
<th>Movie</th>
</tr>
<tr wicket:id="resourceList">
<td wicket:id="resourceName">
</td>
</tr>
</table>
</div>
</div>
</body>
</html>
MoviePage.java
package javasplitter.web;
import com.facetmap.*;
import javasplitter.web.facetmap.Movie;
import javasplitter.web.facetmap.gui.MovieCriteria;
import javasplitter.web.facetmap.gui.Option;
import com.google.inject.Inject;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import java.util.*;
/**
* A simple page that will display some movies.
*/
public class MoviePage extends WebPage {
private static final long serialVersionUID = 1L;
public static final String REF_PARAMETER = "refId";
@Inject
private Facetmap m_facetmap;
/**
* Will be called by the Wicket framework.
*/
public MoviePage(final PageParameters parameters)
{
setupFacetMap(parameters);
}
/**
* Initializes all Wicket components based on the current selection
* and the (global) {@link Facetmap}.
*/
private void setupFacetMap(final PageParameters parameters)
{
String ref = parameters.getString(REF_PARAMETER, "");
Facetmap facetmap = m_facetmap;
Selection currentSelection = getCurrentSelection(facetmap, ref);
setupForwardSelections(currentSelection);
setupResources(currentSelection);
}
/**
* Initializes all Wicket components based on the current {@link Selection}.
*/
private void setupResources(Selection currentSelection)
{
Listresources = new ArrayList ();
SelectedResourceIterator resourceIterator = null;
try
{
resourceIterator = currentSelection.getResources();
}
catch (InternalException e)
{
throw new RuntimeException("An error occured while getting resources.", e);
}
if (resourceIterator != null)
{
while (resourceIterator.hasNext())
{
Resource resource;
try
{
resource = resourceIterator.next();
resources.add(resource);
}
catch (InternalException e)
{
throw new RuntimeException("An error occured while iterating and adding resources.", e);
}
}
}
ListView resourceList = new ListView("resourceList", resources)
{
@Override
protected void populateItem(ListItem item)
{
Movie movie = (Movie) item.getModelObject();
Label text = new Label("resourceName", movie.getTitle());
item.add(text);
}
};
add(resourceList);
}
/**
* Populates a ListView component based on the given {@link Selection }.
*/
private void setupForwardSelections(Selection currentSelection)
{
Listselections = new ArrayList ();
if (currentSelection != null)
{
selections = getForwardSelections(currentSelection);
}
ListView selectionList = new ListView("facetList", selections)
{
@Override
protected void populateItem(ListItem item)
{
MovieCriteria movieCriteria = (MovieCriteria) item.getModelObject();
String facetName = movieCriteria.getName();
Label facetNameLabel = new Label("facetName", facetName);
facetNameLabel.setRenderBodyOnly(true);
item.add(facetNameLabel);
Listoptions = movieCriteria.getOptions();
ListView optionList = new ListView("optionList", options)
{
@Override
protected void populateItem(ListItem item)
{
Option option = (Option) item.getModelObject();
String optionName = option.getName();
String optionLink = option.getLink();
PageParameters pageParameters = new PageParameters();
pageParameters.add(REF_PARAMETER, optionLink);
Label text = new Label("text", optionName);
text.setRenderBodyOnly(true);
BookmarkablePageLink link = new BookmarkablePageLink("link", MoviePage.class, pageParameters);
link.add(text);
item.add(link);
}
};
item.add(optionList);
}
};
add(selectionList);
}
/**
* Returns the current {@link Selection} from the specified {@link Facetmap} using
* the given identifier. Will return the root selection if the givenref
* parameter is blank ornull
.
*/
private Selection getCurrentSelection(Facetmap facetmap, String ref)
{
Selection selection;
try
{
selection = StringUtils.isBlank(ref) ? facetmap.getRootSelection() : facetmap.getSelection(ref);
}
catch (InternalException e)
{
throw new RuntimeException("An error occured accessing a Selection.", e);
}
catch (UnknownReferenceException e)
{
throw new RuntimeException("An error occured accessing a Selection.", e);
}
return selection;
}
/**
* Returns a list of {@link MovieCriteria} objects from the specified Selection.
*/
private ListgetForwardSelections(Selection selection)
{
ListmovieCriterias = new ArrayList ();
int count = selection.getFacetCount();
for (int i = 0; i < count; i++)
{
String facetTitle = extractFacetTitle(selection.getHeadings(i));
Iterator iterator;
try
{
iterator = selection.getForwardSelections(i);
}
catch (InternalException e)
{
throw new RuntimeException("Unable to get forward selections", e);
}
if (iterator != null)
{
Listoptions = new ArrayList ();
while (iterator.hasNext())
{
Selection forwardSelection = (Selection) iterator.next();
int resourceCount = extractResourceCount(forwardSelection);
String optionTitle = extractHeadingTitle(forwardSelection.getHeadings(i)) + " (" + resourceCount + ")";
String optionRef = forwardSelection.getRef();
options.add(new Option(optionTitle, optionRef));
}
movieCriterias.add(new MovieCriteria(facetTitle, options));
}
}
return movieCriterias;
}
private int extractResourceCount(Selection selection)
{
int i = 0;
try
{
i = selection.getResourceCount();
}
catch (InternalException e)
{
throw new RuntimeException("An error occured while accessing the resource count in a Selection.", e);
}
return i;
}
private String extractHeadingTitle(Heading[] headings)
{
String title = "";
if (headings != null && headings.length > 0)
{
title = (headings [0]).getTitle();
}
return title;
}
private String extractFacetTitle(Heading[] headings)
{
String title = "";
if (headings != null && headings.length > 0)
{
title = (headings [0]).getFacet().getTitle();
}
return title;
}
}
The html file is for the markup, the java file will add and populate all Components within the page. I am not going into the Wicket details here, so let's just assume that you all know how Wicket works. The important part in the MoviePage class is the Facetmap, which in turn is injected by Google Guice. A Facetmap represents some sort of container, that stores a list of all you items and all the possible facets and headings.
MovieFacetmap.java
package javasplitter.web.facetmap;
import com.facetmap.simple.SimpleFacetmap;
import com.facetmap.ResourceSpace;
import com.google.inject.Inject;
import com.google.inject.name.Named;
import java.util.Properties;
/**
* A {@link SimpleFacetmap} specific to movies.
*
* @author reik.schatz
*/
public class MovieFacetmap extends SimpleFacetmap
{
@Inject
public MovieFacetmap(@Named("movieFacetmapName") String name, ResourceSpace resourceSpace, Properties properties)
{
super(name, resourceSpace, properties);
}
}
The Facetmap class used in this project is called MovieFacetmap and is a subclass of the SimpleFacetmap that is part of the Facetmap Light library. When the MovieFacetmap is created on application startup, it has to be initialized with a name, a ResourceSpace and some Properties. The name is just a String and can be everything. You will notice a little @Named Annotation next to the parameter. That one comes from Google Guice. I will get to that in a later part. For now, just accept that the name will magically be set to "80s Movies". The ResourceSpace is another container class. This is where the items (in our case Movies) and the different facets are really kept. The Facetmap container is just using the ResourceSpace internally. For this sample web application, the ResourceSpace is implemented in a class called MovieResourceSpace.
MovieResourceSpace.java
package javasplitter.web.facetmap;
import com.facetmap.Resource;
import com.facetmap.InternalException;
import com.facetmap.ResourceSpace;
import com.facetmap.FacetSpace;
import com.google.inject.name.Named;
import com.google.inject.Inject;
import java.util.Iterator;
import java.util.Map;
/**
* Wraps a {@link MovieList} in a ResourceSpace implementation, backed by the
* classification scheme provided by {@link MovieFacets}. This ResourceSpace
* will contain Movie objects, and like all ResourceSpace objects, it has an
* underlying FacetSpace which describes how its resources are classified.
*/
public class MovieResourceSpace implements ResourceSpace
{
private final Map m_movies;
private final FacetSpace m_facetSpace;
@Inject
public MovieResourceSpace(@Named("movies") Map movies, FacetSpace facetSpace)
{
m_movies = movies;
m_facetSpace = facetSpace;
}
public Iterator getAll() throws InternalException
{
return m_movies.values().iterator();
}
public Resource getById(int id) throws InternalException {
try
{
return (Resource) m_movies.get(id);
}
catch (ArrayIndexOutOfBoundsException exc)
{
throw new InternalException(exc);
}
}
public FacetSpace getFacetSpace()
{
return m_facetSpace;
}
public int getResourceCount() throws InternalException
{
return m_movies.size();
}
}
When the MovieResourceSpace is created, it receives a Map of Movies and a FacetSpace. The Map given to the MovieResourceSpace is an instance of the MovieList class, which for convinience is inheriting from HashTable. The FacetSpace given to the MovieResourceSpace is an instance of MovieFacets. It is worth looking into these two classes a little bit closer.
When MovieList is instanciated, it will automatically add almost 500 movies to itself. Each Movie has an id, name, release date, box office gross, genre, studio and a list of actors playing in it.
MovieList.java
package javasplitter.web.facetmap;
import com.facetmap.UnknownReferenceException;
import com.facetmap.FacetSpace;
import com.google.inject.Inject;
import java.text.ParseException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
/*
* Sample use of Facetmap 2.0
* (c) 2007 by Complete Information Architecture and Travis Wilson.
*
* All source code in package "com.facetmap.example" or its subpackages
* (the "Sample Code") uses Facetmap software to enable faceted browsing of
* its data. The data in this program is fictitious and is not intended for
* any use other than the demonstration of Facetmap.
*
* The Sample Code is distributed in the hope that it will be informative,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
/**
* This represents the storage of {@link Movie} resources that we want to browse
* via Facetmap. Movies are stored in a Map (not a java List) because each Movie
* must be retrievable with a unique ID that stays constant during the life
* of the Facetmap component. (If we just used the index numbering in a java
* List as each Movie's unique ID, the IDs would change if we ever deleted a
* Movie from the list.
*/
public class MovieList extends Hashtable
{
@Inject
public MovieList(FacetSpace facetSpace)
{
super();
Listmovies = new ArrayList ();
try
{
movies = createMovieList(facetSpace);
}
catch (ParseException e)
{
}
catch (UnknownReferenceException e)
{
}
for (Movie movie : movies)
{
put(movie.getId(), movie);
}
}
public ListcreateMovieList(FacetSpace facetSpace) throws ParseException, UnknownReferenceException
{
Listmovies = new ArrayList ();
DateFormat dateFormat = new SimpleDateFormat("d-MMM-yyyy");
movies.add(new Movie(facetSpace,
movies.size(),
"E.T. the Extra-Terrestrial",
dateFormat.parse("11-Jun-1982"),
435110554,
"Drama",
"Universal",
Arrays.asList(new String[]{"Henry Thomas", "Dee Wallace-Stone", "Drew Barrymore", "Peter Coyote"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Star Wars: Episode VI - Return of the Jedi",
dateFormat.parse("25-May-1983"),
263734642,
"Action-Adventure",
"Lucasfilm",
Arrays.asList(new String[]{"Mark Hamill", "Harrison Ford", "Carrie Fisher", "Billy Dee Williams", "Anthony Daniels"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Batman",
dateFormat.parse("19-Jun-1989"),
251188924,
"Crime Drama",
"Warner",
Arrays.asList(new String[]{"Michael Keaton", "Jack Nicholson", "Kim Basinger", "Robert Wuhl", "Pat Hingle"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Raiders of the Lost Ark",
dateFormat.parse("12-Jun-1981"),
242374454,
"Action-Adventure",
"Paramount",
Arrays.asList(new String[]{"Harrison Ford", "Karen Allen", "John Rhys-Davies"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Ghost Busters",
dateFormat.parse("7-Jun-1984"),
238632124,
"Comedy",
"Columbia",
Arrays.asList(new String[]{"Bill Murray", "Dan Aykroyd", "Sigourney Weaver", "Harold Ramis", "Rick Moranis"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Beverly Hills Cop",
dateFormat.parse("1-Dec-1984"),
234760478,
"Action Comedy",
"Paramount",
Arrays.asList(new String[]{"Eddie Murphy", "Judge Reinhold", "Ronny Cox"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Back to the Future",
dateFormat.parse("3-Jul-1985"),
210609762,
"Comedy",
"Universal",
Arrays.asList(new String[]{"Michael J. Fox", "Christopher Lloyd", "Lea Thompson", "Crispin Glover", "Thomas F. Wilson"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Star Wars: Episode V - The Empire Strikes Back",
dateFormat.parse("21-May-1980"),
209398025,
"Action-Adventure",
"Lucasfilm",
Arrays.asList(new String[]{"Mark Hamill", "Harrison Ford", "Carrie Fisher", "Billy Dee Williams", "Anthony Daniels"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Indiana Jones and the Last Crusade",
dateFormat.parse("24-May-1989"),
197171806,
"Action-Adventure",
"Paramount",
Arrays.asList(new String[]{"Harrison Ford", "Sean Connery", "Denholm Elliott", "John Rhys-Davies"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Indiana Jones and the Temple of Doom",
dateFormat.parse("23-May-1984"),
179870271,
"Action-Adventure",
"Paramount",
Arrays.asList(new String[]{"Harrison Ford", "Kate Capshaw"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Tootsie",
dateFormat.parse("1-Dec-1982"),
177200000,
"Romantic Comedy",
"Columbia",
Arrays.asList(new String[]{"Dustin Hoffman", "Jessica Lange", "Teri Garr", "Dabney Coleman", "Charles Durning"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Top Gun",
dateFormat.parse("12-May-1986"),
176781720,
"Action",
"Paramount",
Arrays.asList(new String[]{"Tom Cruise", "Kelly McGillis", "Val Kilmer", "Anthony Edwards", "Tom Skerritt"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Crocodile Dundee",
dateFormat.parse("26-Sep-1986"),
174803506,
"Comedy",
"Paramount",
Arrays.asList(new String[]{"Paul Hogan", "Linda Kozlowski"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Rain Man",
dateFormat.parse("12-Dec-1988"),
172825435,
"Character Drama",
"Mirage",
Arrays.asList(new String[]{"Dustin Hoffman", "Tom Cruise"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Three Men and a Baby",
dateFormat.parse("23-Nov-1987"),
167780960,
"Comedy",
"Touchstone",
Arrays.asList(new String[]{"Tom Selleck", "Steve Guttenberg", "Ted Danson", "Margaret Colin"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Fatal Attraction",
dateFormat.parse("11-Sep-1987"),
156645693,
"Thriller",
"Paramount",
Arrays.asList(new String[]{"Michael Douglas", "Glenn Close", "Anne Archer"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Who Framed Roger Rabbit",
dateFormat.parse("21-Jun-1988"),
154222492,
"Comedy",
"Touchstone",
Arrays.asList(new String[]{"Bob Hoskins", "Christopher Lloyd"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Beverly Hills Cop II",
dateFormat.parse("19-May-1987"),
153665000,
"Action Comedy",
"Paramount",
Arrays.asList(new String[]{"Eddie Murphy", "Judge Reinhold", "Jürgen Prochnow", "Ronny Cox"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Gremlins",
dateFormat.parse("8-Jun-1984"),
153083102,
"Monster Comedy",
"Warner",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Rambo: First Blood Part II",
dateFormat.parse("22-May-1985"),
150415432,
"Action",
"Carolco",
Arrays.asList(new String[]{"Sylvester Stallone", "Richard Crenna"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Lethal Weapon 2",
dateFormat.parse("7-Jul-1989"),
147253986,
"Action Comedy",
"Warner",
Arrays.asList(new String[]{"Mel Gibson", "Danny Glover", "Joe Pesci"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Look Who's Talking",
dateFormat.parse("13-Oct-1989"),
140088813,
"Romantic Comedy",
"TriStar",
Arrays.asList(new String[]{"John Travolta", "Kirstie Alley", "Olympia Dukakis", "Abe Vigoda"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Platoon",
dateFormat.parse("19-Dec-1986"),
137963328,
"War",
"Hemdale",
Arrays.asList(new String[]{"Tom Berenger", "Willem Dafoe", "Charlie Sheen", "Forest Whitaker"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Honey, I Shrunk the Kids",
dateFormat.parse("23-Jun-1989"),
130724200,
"Comedy",
"Disney",
Arrays.asList(new String[]{"Rick Moranis"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"An Officer and a Gentleman",
dateFormat.parse("28-Jul-1982"),
129795552,
"Romantic Drama",
"Lorimar",
Arrays.asList(new String[]{"Richard Gere", "Debra Winger", "David Keith", "Robert Loggia"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Coming to America",
dateFormat.parse("29-Jun-1988"),
128152300,
"Romantic Comedy",
"Paramount",
Arrays.asList(new String[]{"Eddie Murphy", "James Earl Jones", "John Amos"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Rocky IV",
dateFormat.parse("21-Nov-1985"),
127900000,
"Character Drama",
"MGM",
Arrays.asList(new String[]{"Sylvester Stallone", "Talia Shire", "Burt Young", "Carl Weathers", "Brigitte Nielsen"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Rocky III",
dateFormat.parse("28-May-1982"),
125049125,
"Character Drama",
"United Artists",
Arrays.asList(new String[]{"Sylvester Stallone", "Talia Shire", "Burt Young", "Carl Weathers", "Burgess Meredith"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Good Morning, Vietnam",
dateFormat.parse("23-Dec-1987"),
123922370,
"War",
"Touchstone",
Arrays.asList(new String[]{"Robin Williams", "Forest Whitaker", "Bruno Kirby"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"On Golden Pond",
dateFormat.parse("4-Dec-1981"),
119200000,
"Drama",
"Universal",
Arrays.asList(new String[]{"Katharine Hepburn", "Jane Fonda", "Dabney Coleman"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Back to the Future Part II",
dateFormat.parse("20-Nov-1989"),
118500000,
"Comedy",
"Universal",
Arrays.asList(new String[]{"Michael J. Fox", "Christopher Lloyd", "Lea Thompson", "Thomas F. Wilson", "Elisabeth Shue"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Karate Kid, Part II",
dateFormat.parse("19-Jun-1986"),
115103979,
"Romantic Drama",
"Columbia",
Arrays.asList(new String[]{"Ralph Macchio", "Pat Morita"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Big",
dateFormat.parse("3-Jun-1988"),
114968774,
"Comedy",
"20th Century Fox",
Arrays.asList(new String[]{"Tom Hanks", "Elizabeth Perkins", "Robert Loggia", "John Heard"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Ghostbusters II",
dateFormat.parse("16-Jun-1989"),
112494738,
"Comedy",
"Columbia",
Arrays.asList(new String[]{"Bill Murray", "Dan Aykroyd", "Sigourney Weaver", "Harold Ramis", "Rick Moranis"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Star Trek IV: The Voyage Home",
dateFormat.parse("26-Nov-1986"),
109713132,
"Comedy",
"Paramount",
Arrays.asList(new String[]{"William Shatner", "Leonard Nimoy", "DeForest Kelley", "James Doohan", "George Takei"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"'Crocodile' Dundee II",
dateFormat.parse("25-May-1988"),
109305000,
"Comedy",
"Paramount",
Arrays.asList(new String[]{"Paul Hogan", "Linda Kozlowski"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Terms of Endearment",
dateFormat.parse("20-Nov-1983"),
108423489,
"Romantic Drama",
"Paramount",
Arrays.asList(new String[]{"Shirley MacLaine", "Debra Winger", "Jack Nicholson", "Danny DeVito", "Jeff Daniels"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Superman II",
dateFormat.parse("19-Jun-1981"),
108185706,
"Action",
"Warner",
Arrays.asList(new String[]{"Gene Hackman", "Christopher Reeve", "Ned Beatty", "Jackie Cooper"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Driving Miss Daisy",
dateFormat.parse("13-Dec-1989"),
106593296,
"Character Drama",
"Majestic",
Arrays.asList(new String[]{"Morgan Freeman", "Jessica Tandy", "Dan Aykroyd"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Porky's",
dateFormat.parse("19-Mar-1982"),
105500000,
"Comedy",
"Melvin Simon",
Arrays.asList(new String[]{"Dan Monahan", "Roger Wilson", "Cyril O'Reilly"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Nine to Five",
dateFormat.parse("19-Dec-1980"),
103290500,
"Comedy",
"20th Century Fox",
Arrays.asList(new String[]{"Jane Fonda", "Lily Tomlin", "Dolly Parton", "Dabney Coleman"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Stir Crazy",
dateFormat.parse("12-Dec-1980"),
101300000,
"Comedy",
"Columbia",
Arrays.asList(new String[]{"Gene Wilder", "Richard Pryor", "JoBeth Williams"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Parenthood",
dateFormat.parse("31-Jul-1989"),
100047830,
"Comedy",
"Universal",
Arrays.asList(new String[]{"Steve Martin", "Jason Robards", "Rick Moranis"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Dead Poets Society",
dateFormat.parse("2-Jun-1989"),
95860116,
"Drama",
"Touchstone",
Arrays.asList(new String[]{"Robin Williams", "Ethan Hawke"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Arthur",
dateFormat.parse("17-Jul-1981"),
95461682,
"Romantic Comedy",
"Orion",
Arrays.asList(new String[]{"Dudley Moore", "Liza Minnelli", "John Gielgud", "Geraldine Fitzgerald"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Flashdance",
dateFormat.parse("15-Apr-1983"),
94900000,
"Romantic Drama",
"Paramount",
Arrays.asList(new String[]{"Jennifer Beals"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Color Purple",
dateFormat.parse("16-Dec-1985"),
94175854,
"Drama",
"Warner",
Arrays.asList(new String[]{"Danny Glover", "Whoopi Goldberg", "Oprah Winfrey"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"When Harry Met Sally...",
dateFormat.parse("12-Jul-1989"),
92823546,
"Romantic Comedy",
"Castle Rock",
Arrays.asList(new String[]{"Billy Crystal", "Meg Ryan", "Carrie Fisher", "Bruno Kirby"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Back to School",
dateFormat.parse("13-Jun-1986"),
91258000,
"Comedy",
"Paper Clip",
Arrays.asList(new String[]{"Rodney Dangerfield", "Burt Young", "Keith Gordon", "Robert Downey Jr."})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Karate Kid",
dateFormat.parse("22-Jun-1984"),
90800000,
"Character Drama",
"Columbia",
Arrays.asList(new String[]{"Ralph Macchio", "Pat Morita", "Elisabeth Shue"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Trading Places",
dateFormat.parse("8-Jun-1983"),
90400000,
"Comedy",
"Paramount",
Arrays.asList(new String[]{"Dan Aykroyd", "Eddie Murphy", "Don Ameche", "Denholm Elliott"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Out of Africa",
dateFormat.parse("10-Dec-1985"),
87100000,
"Romantic Drama",
"Universal",
Arrays.asList(new String[]{"Meryl Streep", "Robert Redford", "Klaus Maria Brandauer"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Stripes",
dateFormat.parse("26-Jun-1981"),
85297000,
"Comedy",
"Columbia",
Arrays.asList(new String[]{"Bill Murray", "Harold Ramis", "Warren Oates", "Sean Young"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Aliens",
dateFormat.parse("18-Jul-1986"),
85160248,
"Action",
"20th Century Fox",
Arrays.asList(new String[]{"Sigourney Weaver", "Michael Biehn", "Lance Henriksen"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Little Mermaid",
dateFormat.parse("15-Nov-1989"),
84355863,
"Musical Comedy",
"Disney",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Steel Magnolias",
dateFormat.parse("5-Nov-1989"),
83759091,
"Drama",
"Rastar Films",
Arrays.asList(new String[]{"Sally Field", "Dolly Parton", "Shirley MacLaine", "Daryl Hannah", "Olympia Dukakis"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The War of the Roses",
dateFormat.parse("4-Dec-1989"),
83699711,
"Dark Comedy",
"20th Century Fox",
Arrays.asList(new String[]{"Michael Douglas", "Kathleen Turner", "Danny DeVito", "Sean Astin"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Airplane!",
dateFormat.parse("2-Jul-1980"),
83400000,
"Comedy",
"Paramount",
Arrays.asList(new String[]{"Lloyd Bridges", "Peter Graves", "Julie Hagerty", "Robert Hays"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Die Hard",
dateFormat.parse("15-Jul-1988"),
81350242,
"Action",
"20th Century Fox",
Arrays.asList(new String[]{"Bruce Willis", "Reginald VelJohnson", "Bonnie Bedelia", "Alexander Godunov"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Police Academy",
dateFormat.parse("16-Mar-1984"),
81200000,
"Comedy",
"Warner",
Arrays.asList(new String[]{"Steve Guttenberg", "Kim Cattrall", "G.W. Bailey", "Bubba Smith"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Moonstruck",
dateFormat.parse("16-Dec-1987"),
80640528,
"Romantic Drama",
"MGM",
Arrays.asList(new String[]{"Cher", "Nicolas Cage", "Vincent Gardenia", "Olympia Dukakis", "Danny Aiello"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Footloose",
dateFormat.parse("17-Feb-1984"),
80000000,
"Drama",
"Paramount",
Arrays.asList(new String[]{"Kevin Bacon", "John Lithgow", "Dianne Wiest", "Chris Penn"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Golden Child",
dateFormat.parse("12-Dec-1986"),
79817937,
"Action Comedy",
"Paramount",
Arrays.asList(new String[]{"Eddie Murphy", "Victor Wong"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"WarGames",
dateFormat.parse("3-Jun-1983"),
79568000,
"Thriller",
"United Artists",
Arrays.asList(new String[]{"Matthew Broderick", "Dabney Coleman", "Ally Sheedy", "Barry Corbin"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Star Trek: The Wrath of Khan",
dateFormat.parse("4-Jun-1982"),
78900000,
"Action-Adventure",
"Paramount",
Arrays.asList(new String[]{"William Shatner", "Leonard Nimoy", "DeForest Kelley", "James Doohan", "Walter Koenig"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Cocktail",
dateFormat.parse("29-Jul-1988"),
78222753,
"Romantic Drama",
"Touchstone",
Arrays.asList(new String[]{"Tom Cruise", "Bryan Brown", "Elisabeth Shue"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Naked Gun: From the Files of Police Squad!",
dateFormat.parse("2-Dec-1988"),
78041829,
"Comedy",
"Paramount",
Arrays.asList(new String[]{"Leslie Nielsen", "Ricardo Montalban"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Poltergeist",
dateFormat.parse("4-Jun-1982"),
76600000,
"Horror",
"MGM",
Arrays.asList(new String[]{"Craig T. Nelson", "JoBeth Williams"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Star Trek III: The Search for Spock",
dateFormat.parse("1-Jun-1984"),
76471046,
"Adventure",
"Paramount",
Arrays.asList(new String[]{"William Shatner", "Leonard Nimoy", "DeForest Kelley", "James Doohan", "George Takei"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Untouchables",
dateFormat.parse("2-Jun-1987"),
76270454,
"Crime Drama",
"Paramount",
Arrays.asList(new String[]{"Kevin Costner", "Sean Connery", "Charles Martin Smith", "Andy Garcia", "Robert De Niro"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Cocoon",
dateFormat.parse("21-Jun-1985"),
76100000,
"Comedy",
"20th Century Fox",
Arrays.asList(new String[]{"Don Ameche", "Wilford Brimley", "Hume Cronyn", "Brian Dennehy", "Jack Gilford"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"48 Hrs.",
dateFormat.parse("8-Dec-1982"),
75936265,
"Action Comedy",
"Paramount",
Arrays.asList(new String[]{"Nick Nolte", "Eddie Murphy", "Annette O'Toole", "Frank McRae"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Romancing the Stone",
dateFormat.parse("30-Mar-1984"),
74900000,
"Action-Adventure",
"20th Century Fox",
Arrays.asList(new String[]{"Michael Douglas", "Kathleen Turner", "Danny DeVito"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Oliver & Company",
dateFormat.parse("13-Nov-1988"),
73450885,
"Musical Comedy",
"Disney",
Arrays.asList(new String[]{"Joseph Lawrence", "Cheech Marin", "Richard Mulligan"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Beetle Juice",
dateFormat.parse("29-Mar-1988"),
73326666,
"Monster Comedy",
"Warner",
Arrays.asList(new String[]{"Alec Baldwin", "Geena Davis"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Cannonball Run",
dateFormat.parse("19-Jun-1981"),
72179579,
"Comedy",
"Golden Harvest",
Arrays.asList(new String[]{"Burt Reynolds", "Roger Moore", "Dom DeLuise", "Dean Martin"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Ruthless People",
dateFormat.parse("27-Jun-1986"),
71624879,
"Comedy",
"Touchstone",
Arrays.asList(new String[]{"Danny DeVito", "Bette Midler", "Judge Reinhold", "Helen Slater"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Christmas Vacation",
dateFormat.parse("1-Dec-1989"),
71320000,
"Comedy",
"Warner",
Arrays.asList(new String[]{"Chevy Chase", "Beverly D'Angelo", "John Randolph"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Turner & Hooch",
dateFormat.parse("28-Jul-1989"),
71079915,
"Comedy",
"Touchstone",
Arrays.asList(new String[]{"Tom Hanks", "Craig T. Nelson", "Reginald VelJohnson"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Any Which Way You Can",
dateFormat.parse("17-Dec-1980"),
70700000,
"Action Comedy",
"Warner",
Arrays.asList(new String[]{"Clint Eastwood", "Sondra Locke", "Geoffrey Lewis"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Ferris Bueller's Day Off",
dateFormat.parse("11-Jun-1986"),
70136369,
"Comedy",
"Paramount",
Arrays.asList(new String[]{"Matthew Broderick", "Alan Ruck", "Jennifer Grey"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Born on the Fourth of July",
dateFormat.parse("20-Dec-1989"),
70001698,
"Character Drama",
"Ixtlan",
Arrays.asList(new String[]{"Tom Cruise"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Private Benjamin",
dateFormat.parse("7-Oct-1980"),
69847348,
"Comedy",
"Warner",
Arrays.asList(new String[]{"Goldie Hawn"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Best Little Whorehouse in Texas",
dateFormat.parse("23-Jul-1982"),
69701637,
"Musical Comedy",
"RKO",
Arrays.asList(new String[]{"Burt Reynolds", "Dolly Parton", "Dom DeLuise", "Charles Durning"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Purple Rain",
dateFormat.parse("27-Jul-1984"),
68392977,
"Character Drama",
"Warner",
Arrays.asList(new String[]{"Prince", "Clarence Williams III"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Jewel of the Nile",
dateFormat.parse("4-Dec-1985"),
68275764,
"Action-Adventure",
"20th Century Fox",
Arrays.asList(new String[]{"Michael Douglas", "Kathleen Turner", "Danny DeVito", "Spiros Focás"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Octopussy",
dateFormat.parse("10-Jun-1983"),
67900000,
"Action",
"United Artists",
Arrays.asList(new String[]{"Roger Moore"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Sudden Impact",
dateFormat.parse("8-Dec-1983"),
67642693,
"Crime Drama",
"Warner",
Arrays.asList(new String[]{"Clint Eastwood", "Sondra Locke", "Pat Hingle"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Quest for Fire",
dateFormat.parse("12-Feb-1982"),
67400000,
"Drama",
"Cine Trail",
Arrays.asList(new String[]{"Rae Dawn Chong"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Coal Miner's Daughter",
dateFormat.parse("7-Mar-1980"),
67182787,
"Character Drama",
"Universal",
Arrays.asList(new String[]{"Sissy Spacek"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Secret of My Succe$s",
dateFormat.parse("7-Apr-1987"),
66995879,
"Romantic Comedy",
"Universal",
Arrays.asList(new String[]{"Michael J. Fox", "Helen Slater"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Uncle Buck",
dateFormat.parse("16-Aug-1989"),
66758538,
"Comedy",
"Universal",
Arrays.asList(new String[]{"John Candy", "Gaby Hoffmann", "Macaulay Culkin", "Amy Madigan"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Smokey and the Bandit II",
dateFormat.parse("15-Aug-1980"),
66132626,
"Action Comedy",
"Universal",
Arrays.asList(new String[]{"Burt Reynolds", "Jackie Gleason"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Stakeout",
dateFormat.parse("5-Aug-1987"),
65673233,
"Comedy",
"Touchstone",
Arrays.asList(new String[]{"Richard Dreyfuss", "Emilio Estevez"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Witness",
dateFormat.parse("8-Feb-1985"),
65500000,
"Thriller",
"Paramount",
Arrays.asList(new String[]{"Harrison Ford", "Kelly McGillis", "Lukas Haas"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Lethal Weapon",
dateFormat.parse("6-Mar-1987"),
65207127,
"Action Comedy",
"Warner",
Arrays.asList(new String[]{"Mel Gibson", "Danny Glover", "Gary Busey"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Mr. Mom",
dateFormat.parse("22-Jul-1983"),
64800000,
"Comedy",
"Sherwood",
Arrays.asList(new String[]{"Michael Keaton", "Teri Garr"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Field of Dreams",
dateFormat.parse("21-Apr-1989"),
64431625,
"Drama",
"Gordon Company",
Arrays.asList(new String[]{"Kevin Costner", "Amy Madigan", "Gaby Hoffmann", "Ray Liotta", "Timothy Busfield"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Working Girl",
dateFormat.parse("20-Dec-1988"),
64000000,
"Romantic Comedy",
"20th Century Fox",
Arrays.asList(new String[]{"Harrison Ford", "Sigourney Weaver", "Melanie Griffith", "Alec Baldwin"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Staying Alive",
dateFormat.parse("11-Jul-1983"),
63800000,
"Character Drama",
"Paramount",
Arrays.asList(new String[]{"John Travolta", "Cynthia Rhodes"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Witches of Eastwick",
dateFormat.parse("12-Jun-1987"),
63766510,
"Dark Comedy",
"Warner",
Arrays.asList(new String[]{"Jack Nicholson", "Cher", "Susan Sarandon", "Michelle Pfeiffer", "Veronica Cartwright"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Risky Business",
dateFormat.parse("5-Aug-1983"),
63541777,
"Comedy",
"Geffen",
Arrays.asList(new String[]{"Tom Cruise", "Joe Pantoliano", "Richard Masur"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"A Fish Called Wanda",
dateFormat.parse("7-Jul-1988"),
63493712,
"Comedy",
"MGM",
Arrays.asList(new String[]{"John Cleese", "Jamie Lee Curtis", "Kevin Kline"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Dirty Dancing",
dateFormat.parse("17-Aug-1987"),
63446382,
"Romantic Drama",
"Vestron",
Arrays.asList(new String[]{"Jennifer Grey", "Patrick Swayze", "Jerry Orbach", "Cynthia Rhodes"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Tango & Cash",
dateFormat.parse("22-Dec-1989"),
63408614,
"Action Comedy",
"Warner",
Arrays.asList(new String[]{"Sylvester Stallone", "Kurt Russell", "Teri Hatcher", "Jack Palance"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Down and Out in Beverly Hills",
dateFormat.parse("31-Jan-1986"),
62134225,
"Comedy",
"Touchstone",
Arrays.asList(new String[]{"Nick Nolte", "Bette Midler", "Richard Dreyfuss"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Splash",
dateFormat.parse("9-Mar-1984"),
62100000,
"Romantic Comedy",
"Touchstone",
Arrays.asList(new String[]{"Tom Hanks", "Daryl Hannah", "John Candy"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Vacation",
dateFormat.parse("29-Jul-1983"),
61400000,
"Comedy",
"Warner",
Arrays.asList(new String[]{"Chevy Chase", "Beverly D'Angelo", "Anthony Michael Hall"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Goonies",
dateFormat.parse("7-Jun-1985"),
61400000,
"Adventure",
"Warner",
Arrays.asList(new String[]{"Sean Astin", "Corey Feldman"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Harlem Nights",
dateFormat.parse("17-Nov-1989"),
60864870,
"Comedy",
"Paramount",
Arrays.asList(new String[]{"Eddie Murphy", "Richard Pryor", "Danny Aiello"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Scrooged",
dateFormat.parse("23-Nov-1988"),
60328558,
"Comedy",
"Paramount",
Arrays.asList(new String[]{"Bill Murray", "Karen Allen", "Bob Goldthwait"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Superman III",
dateFormat.parse("17-Jun-1983"),
59950623,
"Action Comedy",
"Dovemead Films",
Arrays.asList(new String[]{"Christopher Reeve", "Richard Pryor", "Jackie Cooper", "Annette O'Toole"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Predator",
dateFormat.parse("12-Jun-1987"),
59735548,
"Action",
"20th Century Fox",
Arrays.asList(new String[]{"Arnold Schwarzenegger", "Carl Weathers", "Bill Duke", "Jesse Ventura"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Spies Like Us",
dateFormat.parse("6-Dec-1985"),
59526202,
"Comedy",
"Warner",
Arrays.asList(new String[]{"Chevy Chase", "Dan Aykroyd", "Steve Forrest"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Blue Lagoon",
dateFormat.parse("20-Jun-1980"),
58853106,
"Romantic Drama",
"Columbia",
Arrays.asList(new String[]{"Brooke Shields", "William Daniels"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Sea of Love",
dateFormat.parse("15-Sep-1989"),
58571513,
"Crime Drama",
"Universal",
Arrays.asList(new String[]{"Al Pacino", "John Goodman"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Throw Momma from the Train",
dateFormat.parse("11-Dec-1987"),
57915972,
"Dark Comedy",
"Orion",
Arrays.asList(new String[]{"Danny DeVito", "Billy Crystal"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Pet Sematary",
dateFormat.parse("21-Apr-1989"),
57469179,
"Horror",
"Paramount",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Dragnet",
dateFormat.parse("23-Jun-1987"),
57387516,
"Comedy",
"Universal",
Arrays.asList(new String[]{"Dan Aykroyd", "Tom Hanks", "Christopher Plummer", "Alexandra Paul"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Willow",
dateFormat.parse("20-May-1988"),
57269863,
"Action-Adventure",
"MGM",
Arrays.asList(new String[]{"Val Kilmer"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Blues Brothers",
dateFormat.parse("16-Jun-1980"),
57229890,
"Musical Comedy",
"Universal",
Arrays.asList(new String[]{"John Belushi", "Dan Aykroyd"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Annie",
dateFormat.parse("17-May-1982"),
57059003,
"Musical Comedy",
"Columbia",
Arrays.asList(new String[]{"Carol Burnett", "Tim Curry", "Bernadette Peters"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Beaches",
dateFormat.parse("21-Dec-1988"),
57041866,
"Character Drama",
"Touchstone",
Arrays.asList(new String[]{"Bette Midler", "Barbara Hershey", "John Heard"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Big Chill",
dateFormat.parse("23-Sep-1983"),
56200000,
"Drama",
"Columbia",
Arrays.asList(new String[]{"Tom Berenger", "Glenn Close", "Jeff Goldblum", "William Hurt", "Kevin Kline"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Police Academy 2: Their First Assignment",
dateFormat.parse("29-Mar-1985"),
55500000,
"Comedy",
"Warner",
Arrays.asList(new String[]{"Steve Guttenberg", "Bubba Smith", "David Graf", "Michael Winslow"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Never Say Never Again",
dateFormat.parse("6-Oct-1983"),
55432841,
"Action",
"Warner",
Arrays.asList(new String[]{"Sean Connery", "Klaus Maria Brandauer", "Max von Sydow", "Kim Basinger"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Star Trek V: The Final Frontier",
dateFormat.parse("9-Jun-1989"),
55210049,
"Adventure",
"Paramount",
Arrays.asList(new String[]{"William Shatner", "Leonard Nimoy", "DeForest Kelley", "James Doohan", "Walter Koenig"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Chariots of Fire",
dateFormat.parse("25-Sep-1981"),
54943970,
"Drama",
"Warner",
Arrays.asList(new String[]{"Nigel Havers"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"For Your Eyes Only",
dateFormat.parse("26-Jun-1981"),
54812802,
"Action",
"United Artists",
Arrays.asList(new String[]{"Roger Moore", "Topol"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Ordinary People",
dateFormat.parse("19-Sep-1980"),
54766923,
"Drama",
"Paramount",
Arrays.asList(new String[]{"Donald Sutherland", "Timothy Hutton", "M. Emmet Walsh"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Abyss",
dateFormat.parse("9-Aug-1989"),
54222000,
"Thriller",
"20th Century Fox",
Arrays.asList(new String[]{"Ed Harris", "Mary Elizabeth Mastrantonio", "Michael Biehn"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"La Bamba",
dateFormat.parse("24-Jul-1987"),
54215416,
"Character Drama",
"Columbia",
Arrays.asList(new String[]{"Lou Diamond Phillips", "Elizabeth Peña"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Verdict",
dateFormat.parse("8-Dec-1982"),
54000000,
"Drama",
"20th Century Fox",
Arrays.asList(new String[]{"Paul Newman", "Jack Warden", "James Mason"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Rambo III",
dateFormat.parse("25-May-1988"),
53715611,
"Action",
"Carolco",
Arrays.asList(new String[]{"Sylvester Stallone", "Richard Crenna", "Kurtwood Smith", "Spiros Focás"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"RoboCop",
dateFormat.parse("17-Jul-1987"),
53424681,
"Dark Comedy",
"Orion",
Arrays.asList(new String[]{"Peter Weller", "Nancy Allen", "Ronny Cox", "Kurtwood Smith"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Urban Cowboy",
dateFormat.parse("6-Jun-1980"),
53300000,
"Character Drama",
"Paramount",
Arrays.asList(new String[]{"John Travolta", "Debra Winger", "Scott Glenn", "Barry Corbin"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Outrageous Fortune",
dateFormat.parse("30-Jan-1987"),
52864741,
"Comedy",
"Touchstone",
Arrays.asList(new String[]{"Shelley Long", "Bette Midler", "Peter Coyote"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Grand Canyon: The Hidden Secrets",
dateFormat.parse("16-Jun-1984"),
52800000,
"Documentary",
"Cinema Group Ventures",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Gandhi",
dateFormat.parse("6-Dec-1982"),
52767889,
"Character Drama",
"Goldcrest Films International",
Arrays.asList(new String[]{"Ben Kingsley", "Candice Bergen", "John Gielgud"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Color of Money",
dateFormat.parse("8-Oct-1986"),
52293982,
"Drama",
"Touchstone",
Arrays.asList(new String[]{"Paul Newman", "Tom Cruise", "Mary Elizabeth Mastrantonio", "Helen Shaver", "John Turturro"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Stand by Me",
dateFormat.parse("8-Aug-1986"),
52287414,
"Drama",
"Columbia",
Arrays.asList(new String[]{"Wil Wheaton", "River Phoenix", "Corey Feldman"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Amadeus",
dateFormat.parse("6-Sep-1984"),
51600000,
"Character Drama",
"Saul Zaentz",
Arrays.asList(new String[]{"F. Murray Abraham", "Simon Callow"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Broadcast News",
dateFormat.parse("16-Dec-1987"),
51249404,
"Romantic Comedy",
"20th Century Fox",
Arrays.asList(new String[]{"William Hurt", "Albert Brooks", "Holly Hunter"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Gods Must Be Crazy",
dateFormat.parse("9-Jul-1984"),
51200000,
"Comedy",
"CAT Films",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Living Daylights",
dateFormat.parse("31-Jul-1987"),
51185897,
"Action",
"United Artists",
Arrays.asList(new String[]{"Timothy Dalton", "Joe Don Baker", "John Rhys-Davies"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Bull Durham",
dateFormat.parse("15-Jun-1988"),
50888729,
"Romantic Comedy",
"The Mount Company",
Arrays.asList(new String[]{"Kevin Costner", "Susan Sarandon", "Tim Robbins", "Trey Wilson", "Robert Wuhl"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Eddie Murphy Raw",
dateFormat.parse("18-Dec-1987"),
50504655,
"Comedy",
"Paramount",
Arrays.asList(new String[]{"Eddie Murphy"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Four Seasons",
dateFormat.parse("22-May-1981"),
50427646,
"Drama",
"Universal",
Arrays.asList(new String[]{"Alan Alda", "Carol Burnett"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Toy",
dateFormat.parse("10-Dec-1982"),
50400000,
"Comedy",
"Columbia",
Arrays.asList(new String[]{"Richard Pryor", "Jackie Gleason", "Ned Beatty", "Scott Schwartz"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"A View to a Kill",
dateFormat.parse("22-May-1985"),
50327960,
"Action",
"United Artists",
Arrays.asList(new String[]{"Roger Moore", "Christopher Walken", "Grace Jones"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Legal Eagles",
dateFormat.parse("18-Jun-1986"),
49851591,
"Romantic Drama",
"Universal",
Arrays.asList(new String[]{"Robert Redford", "Debra Winger", "Daryl Hannah", "Brian Dennehy", "Terence Stamp"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Popeye",
dateFormat.parse("12-Dec-1980"),
49823057,
"Musical Comedy",
"Disney",
Arrays.asList(new String[]{"Robin Williams", "Shelley Duvall"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Major League",
dateFormat.parse("7-Apr-1989"),
49797148,
"Comedy",
"Morgan Creek",
Arrays.asList(new String[]{"Tom Berenger", "Charlie Sheen", "Corbin Bernsen"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"European Vacation",
dateFormat.parse("26-Jul-1985"),
49400000,
"Comedy",
"Warner",
Arrays.asList(new String[]{"Chevy Chase", "Beverly D'Angelo"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"A Nightmare on Elm Street 4: The Dream Master",
dateFormat.parse("19-Aug-1988"),
49369899,
"Horror",
"New Line",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Planes, Trains and Automobiles",
dateFormat.parse("25-Nov-1987"),
49230280,
"Comedy",
"Paramount",
Arrays.asList(new String[]{"Steve Martin", "John Candy", "Michael McKean", "Kevin Bacon"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Cobra",
dateFormat.parse("23-May-1986"),
49042224,
"Crime Drama",
"Warner",
Arrays.asList(new String[]{"Sylvester Stallone", "Brigitte Nielsen"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Tightrope",
dateFormat.parse("17-Aug-1984"),
48100000,
"Crime Drama",
"Warner",
Arrays.asList(new String[]{"Clint Eastwood", "Dan Hedaya"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Land Before Time",
dateFormat.parse("18-Nov-1988"),
48092846,
"Adventure",
"Universal",
Arrays.asList(new String[]{"Pat Hingle"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Natural",
dateFormat.parse("11-May-1984"),
47951979,
"Character Drama",
"TriStar",
Arrays.asList(new String[]{"Robert Redford", "Glenn Close", "Kim Basinger", "Wilford Brimley"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"An American Tail",
dateFormat.parse("21-Nov-1986"),
47483002,
"Adventure",
"Universal",
Arrays.asList(new String[]{"Dom DeLuise"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"First Blood",
dateFormat.parse("22-Oct-1982"),
47212904,
"Character Drama",
"Carolco",
Arrays.asList(new String[]{"Sylvester Stallone", "Richard Crenna", "Brian Dennehy"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"See No Evil, Hear No Evil",
dateFormat.parse("12-May-1989"),
46908987,
"Comedy",
"TriStar",
Arrays.asList(new String[]{"Richard Pryor", "Gene Wilder", "Kevin Spacey", "Alan North"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Fletch",
dateFormat.parse("31-May-1985"),
46700000,
"Comedy",
"Universal",
Arrays.asList(new String[]{"Chevy Chase", "Joe Don Baker"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Firefox",
dateFormat.parse("14-Jun-1982"),
46700000,
"Action",
"Malpaso",
Arrays.asList(new String[]{"Clint Eastwood", "Freddie Jones"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Colors",
dateFormat.parse("15-Apr-1988"),
46616067,
"Crime Drama",
"Orion",
Arrays.asList(new String[]{"Sean Penn", "Robert Duvall", "Maria Conchita Alonso"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Full Metal Jacket",
dateFormat.parse("17-Jun-1987"),
46357676,
"War",
"Warner",
Arrays.asList(new String[]{"Adam Baldwin", "R. Lee Ermey"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Greystoke: The Legend of Tarzan, Lord of the Apes",
dateFormat.parse("30-Mar-1984"),
45900000,
"Romantic Drama",
"Warner",
Arrays.asList(new String[]{"Ian Holm", "Andie MacDowell"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Breakfast Club",
dateFormat.parse("7-Feb-1985"),
45875171,
"Drama",
"Universal",
Arrays.asList(new String[]{"Emilio Estevez", "Anthony Michael Hall", "Judd Nelson", "Molly Ringwald", "Ally Sheedy"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Scarface",
dateFormat.parse("1-Dec-1983"),
45598982,
"Crime Drama",
"Universal",
Arrays.asList(new String[]{"Al Pacino", "Michelle Pfeiffer", "Mary Elizabeth Mastrantonio", "Robert Loggia"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Jaws 3-D",
dateFormat.parse("22-Jul-1983"),
45517055,
"Horror",
"Universal",
Arrays.asList(new String[]{"Dennis Quaid", "Bess Armstrong", "Louis Gossett Jr."})
));
movies.add(new Movie(facetSpace,
movies.size(),
"A Nightmare on Elm Street 3: Dream Warriors",
dateFormat.parse("27-Feb-1987"),
44793222,
"Horror",
"New Line",
Arrays.asList(new String[]{"Heather Langenkamp", "Robert Englund"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Young Guns",
dateFormat.parse("10-Aug-1988"),
44726644,
"Drama",
"20th Century Fox",
Arrays.asList(new String[]{"Emilio Estevez", "Kiefer Sutherland", "Lou Diamond Phillips", "Charlie Sheen"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Shining",
dateFormat.parse("23-May-1980"),
44017374,
"Horror",
"Warner",
Arrays.asList(new String[]{"Jack Nicholson", "Shelley Duvall", "Scatman Crothers"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Last Emperor",
dateFormat.parse("18-Nov-1987"),
43984230,
"Character Drama",
"Screenframe",
Arrays.asList(new String[]{"John Lone", "Peter O'Toole", "Victor Wong"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Fox and the Hound",
dateFormat.parse("10-Jul-1981"),
43899231,
"Comedy",
"Disney",
Arrays.asList(new String[]{"Mickey Rooney", "Kurt Russell"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Always",
dateFormat.parse("22-Dec-1989"),
43858790,
"Romantic Drama",
"Amblin",
Arrays.asList(new String[]{"Richard Dreyfuss", "Holly Hunter", "John Goodman", "Audrey Hepburn"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Wall Street",
dateFormat.parse("11-Dec-1987"),
43848100,
"Crime Drama",
"20th Century Fox",
Arrays.asList(new String[]{"Charlie Sheen"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Police Academy 3: Back in Training",
dateFormat.parse("21-Mar-1986"),
43579163,
"Comedy",
"Warner",
Arrays.asList(new String[]{"Steve Guttenberg", "Bubba Smith", "David Graf", "Michael Winslow"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"K-9",
dateFormat.parse("28-Apr-1989"),
43247647,
"Action Comedy",
"Universal",
Arrays.asList(new String[]{"James Belushi"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Biloxi Blues",
dateFormat.parse("25-Mar-1988"),
43184798,
"Character Drama",
"Rastar Pictures",
Arrays.asList(new String[]{"Matthew Broderick", "Christopher Walken"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Heartbreak Ridge",
dateFormat.parse("5-Dec-1986"),
42724017,
"War",
"Malpaso",
Arrays.asList(new String[]{"Clint Eastwood"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Mannequin",
dateFormat.parse("13-Feb-1987"),
42721196,
"Romantic Comedy",
"Gladden Entertainment",
Arrays.asList(new String[]{"Andrew McCarthy", "Kim Cattrall", "Estelle Getty", "James Spader", "G.W. Bailey"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Mask",
dateFormat.parse("8-Mar-1985"),
42400000,
"Character Drama",
"Universal",
Arrays.asList(new String[]{"Cher", "Sam Elliott", "Eric Stoltz", "Estelle Getty"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Time Bandits",
dateFormat.parse("6-Nov-1981"),
42365581,
"Adventure",
"Handmade Films",
Arrays.asList(new String[]{"John Cleese", "Sean Connery", "Shelley Duvall", "Katherine Helmond", "Ian Holm"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Blue Thunder",
dateFormat.parse("13-May-1983"),
42300000,
"Crime Drama",
"Columbia",
Arrays.asList(new String[]{"Roy Scheider", "Warren Oates"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Dirty Rotten Scoundrels",
dateFormat.parse("14-Dec-1988"),
42039085,
"Comedy",
"Orion",
Arrays.asList(new String[]{"Steve Martin", "Michael Caine"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Cheech & Chong's Next Movie",
dateFormat.parse("18-Jul-1980"),
41675194,
"Comedy",
"Universal",
Arrays.asList(new String[]{"Cheech Marin", "Tommy Chong"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Great Outdoors",
dateFormat.parse("17-Jun-1988"),
41455230,
"Comedy",
"Universal",
Arrays.asList(new String[]{"Dan Aykroyd", "John Candy", "Annette Bening"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Pale Rider",
dateFormat.parse("28-Jun-1985"),
41400000,
"Action",
"Malpaso",
Arrays.asList(new String[]{"Clint Eastwood", "Chris Penn"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Peggy Sue Got Married",
dateFormat.parse("5-Oct-1986"),
41382841,
"Romantic Comedy",
"TriStar",
Arrays.asList(new String[]{"Kathleen Turner", "Nicolas Cage", "Catherine Hicks", "Joan Allen"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Tequila Sunrise",
dateFormat.parse("2-Dec-1988"),
41292551,
"Drama",
"Warner",
Arrays.asList(new String[]{"Mel Gibson", "Michelle Pfeiffer", "Kurt Russell", "Raul Julia"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Poltergeist II: The Other Side",
dateFormat.parse("23-May-1986"),
40996665,
"Horror",
"MGM",
Arrays.asList(new String[]{"JoBeth Williams", "Craig T. Nelson"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Pee-wee's Big Adventure",
dateFormat.parse("26-Jul-1985"),
40940662,
"Comedy",
"Warner",
Arrays.asList(new String[]{"Paul Reubens"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Revenge of the Nerds",
dateFormat.parse("20-Jul-1984"),
40900000,
"Comedy",
"Interscope",
Arrays.asList(new String[]{"Robert Carradine", "Anthony Edwards", "Timothy Busfield", "Curtis Armstrong"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Absence of Malice",
dateFormat.parse("19-Nov-1981"),
40716963,
"Romantic Drama",
"Columbia",
Arrays.asList(new String[]{"Paul Newman", "Sally Field", "Bob Balaban", "Melinda Dillon"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Short Circuit",
dateFormat.parse("9-May-1986"),
40697761,
"Comedy",
"David Foster Productions",
Arrays.asList(new String[]{"Ally Sheedy", "Steve Guttenberg", "Fisher Stevens", "G.W. Bailey"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Three Fugitives",
dateFormat.parse("27-Jan-1989"),
40590000,
"Action Comedy",
"Touchstone",
Arrays.asList(new String[]{"Nick Nolte", "Martin Short", "James Earl Jones", "Alan Ruck"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Dark Crystal",
dateFormat.parse("17-Dec-1982"),
40577001,
"Adventure",
"Universal",
Arrays.asList(new String[]{"Jim Henson", "Frank Oz", "Dave Goelz"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Jagged Edge",
dateFormat.parse("4-Oct-1985"),
40500000,
"Thriller",
"Columbia",
Arrays.asList(new String[]{"Peter Coyote", "Lance Henriksen"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Bill & Ted's Excellent Adventure",
dateFormat.parse("17-Feb-1989"),
40485039,
"Comedy",
"De Laurentiis",
Arrays.asList(new String[]{"Keanu Reeves", "Alex Winter", "George Carlin"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Pretty in Pink",
dateFormat.parse("28-Feb-1986"),
40471663,
"Romantic Drama",
"Paramount",
Arrays.asList(new String[]{"Molly Ringwald", "Harry Dean Stanton", "Annie Potts", "James Spader"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Fly",
dateFormat.parse("15-Aug-1986"),
40456565,
"Horror",
"Brooksfilms",
Arrays.asList(new String[]{"Jeff Goldblum", "Geena Davis"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Reds",
dateFormat.parse("3-Dec-1981"),
40382659,
"Drama",
"Paramount",
Arrays.asList(new String[]{"Warren Beatty", "Diane Keaton", "Edward Herrmann", "Jack Nicholson"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"2010",
dateFormat.parse("7-Dec-1984"),
40200000,
"Mystery",
"MGM",
Arrays.asList(new String[]{"Roy Scheider", "John Lithgow", "Helen Mirren", "Bob Balaban"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Big Business",
dateFormat.parse("10-Jun-1988"),
40150487,
"Comedy",
"Touchstone",
Arrays.asList(new String[]{"Bette Midler", "Lily Tomlin", "Fred Ward", "Edward Herrmann"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Hannah and Her Sisters",
dateFormat.parse("7-Feb-1986"),
40084041,
"Romantic Comedy",
"Orion",
Arrays.asList(new String[]{"Barbara Hershey", "Carrie Fisher", "Michael Caine", "Dianne Wiest"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Roxanne",
dateFormat.parse("19-Jun-1987"),
40050884,
"Romantic Comedy",
"Columbia",
Arrays.asList(new String[]{"Steve Martin", "Daryl Hannah", "Shelley Duvall"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Caddyshack",
dateFormat.parse("25-Jul-1980"),
39846344,
"Comedy",
"Orion",
Arrays.asList(new String[]{"Chevy Chase", "Rodney Dangerfield", "Bill Murray"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Friday the 13th",
dateFormat.parse("9-May-1980"),
39754601,
"Horror",
"Paramount",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Conan the Barbarian",
dateFormat.parse("14-May-1982"),
39565475,
"Action-Adventure",
"Universal",
Arrays.asList(new String[]{"Arnold Schwarzenegger", "James Earl Jones", "Max von Sydow"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Blind Date",
dateFormat.parse("24-Mar-1987"),
39321715,
"Romantic Comedy",
"TriStar",
Arrays.asList(new String[]{"Kim Basinger", "Bruce Willis", "William Daniels"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"¡Three Amigos!",
dateFormat.parse("10-Dec-1986"),
39246734,
"Comedy",
"HBO",
Arrays.asList(new String[]{"Chevy Chase", "Steve Martin", "Martin Short"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Sword and the Sorcerer",
dateFormat.parse("1-Apr-1982"),
39103500,
"Action-Adventure",
"Sorcerer Productions",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Karate Kid, Part III",
dateFormat.parse("30-Jun-1989"),
38956288,
"Character Drama",
"Columbia",
Arrays.asList(new String[]{"Ralph Macchio", "Pat Morita"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Brewster's Millions",
dateFormat.parse("22-May-1985"),
38800000,
"Comedy",
"Universal",
Arrays.asList(new String[]{"Richard Pryor", "John Candy", "Lonette McKee", "Stephen Collins", "Jerry Orbach"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Little Shop of Horrors",
dateFormat.parse("19-Dec-1986"),
38747385,
"Musical Comedy",
"Geffen",
Arrays.asList(new String[]{"Rick Moranis", "Vincent Gardenia", "Steve Martin"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"About Last Night...",
dateFormat.parse("2-Jul-1986"),
38702310,
"Romantic Drama",
"TriStar",
Arrays.asList(new String[]{"Rob Lowe", "Demi Moore", "James Belushi", "Elizabeth Perkins"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Breakin'",
dateFormat.parse("4-May-1984"),
38682707,
"Drama",
"Cannon",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Great Mouse Detective",
dateFormat.parse("2-Jul-1986"),
38600000,
"Mystery",
"Disney",
Arrays.asList(new String[]{"Vincent Price"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Running Scared",
dateFormat.parse("27-Jun-1986"),
38500726,
"Action Comedy",
"MGM",
Arrays.asList(new String[]{"Gregory Hines", "Billy Crystal", "Joe Pantoliano"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Midnight Run",
dateFormat.parse("11-Jul-1988"),
38413606,
"Action Comedy",
"Universal",
Arrays.asList(new String[]{"Robert De Niro", "Charles Grodin", "Yaphet Kotto"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Bachelor Party",
dateFormat.parse("29-Jun-1984"),
38400000,
"Comedy",
"Twin Continental",
Arrays.asList(new String[]{"Tom Hanks"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Terminator",
dateFormat.parse("26-Oct-1984"),
38371200,
"Action",
"Hemdale",
Arrays.asList(new String[]{"Arnold Schwarzenegger", "Michael Biehn", "Paul Winfield", "Lance Henriksen"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"City Heat",
dateFormat.parse("5-Dec-1984"),
38300000,
"Action Comedy",
"Malpaso",
Arrays.asList(new String[]{"Clint Eastwood", "Burt Reynolds", "Madeline Kahn"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Running Man",
dateFormat.parse("13-Nov-1987"),
38122105,
"Action",
"HBO",
Arrays.asList(new String[]{"Arnold Schwarzenegger", "Maria Conchita Alonso", "Yaphet Kotto", "Jesse Ventura"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Spaceballs",
dateFormat.parse("24-Jun-1987"),
38119483,
"Comedy",
"MGM",
Arrays.asList(new String[]{"Mel Brooks", "Rick Moranis", "Bill Pullman", "John Candy"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Dead Pool",
dateFormat.parse("13-Jul-1988"),
37903295,
"Crime Drama",
"Warner",
Arrays.asList(new String[]{"Clint Eastwood", "Liam Neeson"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Commando",
dateFormat.parse("4-Oct-1985"),
37810000,
"Action",
"20th Century Fox",
Arrays.asList(new String[]{"Arnold Schwarzenegger", "Rae Dawn Chong", "Dan Hedaya"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"St. Elmo's Fire",
dateFormat.parse("28-Jun-1985"),
37800000,
"Romantic Drama",
"Columbia",
Arrays.asList(new String[]{"Emilio Estevez", "Rob Lowe", "Andrew McCarthy", "Demi Moore", "Judd Nelson"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Money Pit",
dateFormat.parse("26-Mar-1986"),
37499651,
"Comedy",
"Universal",
Arrays.asList(new String[]{"Tom Hanks", "Shelley Long", "Alexander Godunov", "Maureen Stapleton", "Joe Mantegna"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Brubaker",
dateFormat.parse("20-Jun-1980"),
37121708,
"Drama",
"20th Century Fox",
Arrays.asList(new String[]{"Robert Redford", "Yaphet Kotto", "David Keith"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Best Friends",
dateFormat.parse("17-Dec-1982"),
36821203,
"Romantic Comedy",
"Warner",
Arrays.asList(new String[]{"Burt Reynolds", "Goldie Hawn", "Jessica Tandy", "Barnard Hughes"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Friday the 13th Part III",
dateFormat.parse("13-Aug-1982"),
36690067,
"Horror",
"Paramount",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Gung Ho",
dateFormat.parse("14-Mar-1986"),
36611610,
"Drama",
"Paramount",
Arrays.asList(new String[]{"Michael Keaton", "Gedde Watanabe", "George Wendt", "John Turturro"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The 'burbs",
dateFormat.parse("17-Feb-1989"),
36602000,
"Comedy",
"Imagine",
Arrays.asList(new String[]{"Tom Hanks", "Carrie Fisher", "Corey Feldman"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Tarzan, the Ape Man",
dateFormat.parse("7-Aug-1981"),
36565280,
"Action-Adventure",
"MGM",
Arrays.asList(new String[]{"Bo Derek"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Mad Max Beyond Thunderdome",
dateFormat.parse("10-Jul-1985"),
36200000,
"Action",
"Kennedy Miller Productions",
Arrays.asList(new String[]{"Mel Gibson"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Red Dawn",
dateFormat.parse("10-Aug-1984"),
35866000,
"Drama",
"United Artists",
Arrays.asList(new String[]{"Patrick Swayze", "C. Thomas Howell", "Lea Thompson", "Charlie Sheen"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Taps",
dateFormat.parse("9-Dec-1981"),
35856053,
"Drama",
"20th Century Fox",
Arrays.asList(new String[]{"Timothy Hutton", "Ronny Cox", "Sean Penn", "Tom Cruise"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Summer School",
dateFormat.parse("22-Jul-1987"),
35658098,
"Romantic Comedy",
"Paramount",
Arrays.asList(new String[]{"Mark Harmon", "Kirstie Alley"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Silkwood",
dateFormat.parse("14-Dec-1983"),
35615609,
"Character Drama",
"20th Century Fox",
Arrays.asList(new String[]{"Meryl Streep", "Kurt Russell", "Cher", "Craig T. Nelson", "Fred Ward"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Sharky's Machine",
dateFormat.parse("18-Dec-1981"),
35610100,
"Crime Drama",
"Warner",
Arrays.asList(new String[]{"Burt Reynolds", "Charles Durning"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"No Way Out",
dateFormat.parse("14-Aug-1987"),
35509515,
"Thriller",
"Orion",
Arrays.asList(new String[]{"Kevin Costner", "Gene Hackman", "Sean Young"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Fletch Lives",
dateFormat.parse("17-Mar-1989"),
35150960,
"Comedy",
"Universal",
Arrays.asList(new String[]{"Chevy Chase", "Hal Holbrook", "Julianne Phillips", "R. Lee Ermey"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Ghoulies",
dateFormat.parse("2-Mar-1985"),
35000000,
"Monster Comedy",
"Empire Pictures",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Red Heat",
dateFormat.parse("14-Jun-1988"),
34994648,
"Action Comedy",
"Carolco",
Arrays.asList(new String[]{"Arnold Schwarzenegger", "James Belushi", "Peter Boyle"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Excalibur",
dateFormat.parse("10-Apr-1981"),
34967437,
"Drama",
"Orion",
Arrays.asList(new String[]{"Helen Mirren"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Places in the Heart",
dateFormat.parse("21-Sep-1984"),
34700000,
"Drama",
"TriStar",
Arrays.asList(new String[]{"Sally Field", "Ed Harris", "Amy Madigan", "John Malkovich"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Dangerous Liaisons",
dateFormat.parse("16-Dec-1988"),
34700000,
"Romantic Drama",
"Warner",
Arrays.asList(new String[]{"Glenn Close", "John Malkovich", "Michelle Pfeiffer", "Swoosie Kurtz", "Keanu Reeves"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Richard Pryor Live on the Sunset Strip",
dateFormat.parse("12-Mar-1982"),
34688873,
"Comedy",
"Columbia",
Arrays.asList(new String[]{"Richard Pryor"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Licence to Kill",
dateFormat.parse("14-Jul-1989"),
34667015,
"Action",
"United Artists",
Arrays.asList(new String[]{"Timothy Dalton"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Mississippi Burning",
dateFormat.parse("9-Dec-1988"),
34603943,
"Drama",
"Orion",
Arrays.asList(new String[]{"Gene Hackman", "Willem Dafoe", "Brad Dourif", "R. Lee Ermey"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Killing Fields",
dateFormat.parse("2-Nov-1984"),
34600000,
"War",
"Warner",
Arrays.asList(new String[]{"John Malkovich", "Julian Sands", "Craig T. Nelson"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Heat",
dateFormat.parse("13-Mar-1987"),
34493095,
"Crime Drama",
"Escalante",
Arrays.asList(new String[]{"Burt Reynolds", "Karen Young", "Howard Hesseman"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Like Father Like Son",
dateFormat.parse("2-Oct-1987"),
34377585,
"Comedy",
"Imagine Entertainment",
Arrays.asList(new String[]{"Dudley Moore", "Margaret Colin", "Catherine Hicks"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Adventures in Babysitting",
dateFormat.parse("1-Jul-1987"),
34368475,
"Comedy",
"Touchstone",
Arrays.asList(new String[]{"Elisabeth Shue"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Porky's II: The Next Day",
dateFormat.parse("24-Jun-1983"),
33759266,
"Comedy",
"20th Century Fox",
Arrays.asList(new String[]{"Dan Monahan", "Roger Wilson", "Cyril O'Reilly"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Child's Play",
dateFormat.parse("9-Nov-1988"),
33244684,
"Horror",
"United Artists",
Arrays.asList(new String[]{"Catherine Hicks", "Chris Sarandon", "Brad Dourif"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Silverado",
dateFormat.parse("10-Jul-1985"),
33200000,
"Drama",
"Columbia",
Arrays.asList(new String[]{"Kevin Kline", "Scott Glenn", "Kevin Costner", "Danny Glover"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Teen Wolf",
dateFormat.parse("23-Aug-1985"),
33086700,
"Comedy",
"Wolfkill",
Arrays.asList(new String[]{"Michael J. Fox"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Tron",
dateFormat.parse("9-Jul-1982"),
33000000,
"Thriller",
"Disney",
Arrays.asList(new String[]{"Jeff Bridges", "David Warner", "Barnard Hughes"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Friday the 13th: The Final Chapter",
dateFormat.parse("13-Apr-1984"),
32980000,
"Horror",
"Paramount",
Arrays.asList(new String[]{"Corey Feldman"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"*batteries not included",
dateFormat.parse("18-Dec-1987"),
32945797,
"Comedy",
"Universal",
Arrays.asList(new String[]{"Hume Cronyn", "Jessica Tandy", "Frank McRae", "Elizabeth Peña"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Accidental Tourist",
dateFormat.parse("23-Dec-1988"),
32632093,
"Romantic Drama",
"Warner",
Arrays.asList(new String[]{"William Hurt", "Kathleen Turner", "Geena Davis"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Nothing in Common",
dateFormat.parse("30-Jul-1986"),
32324557,
"Character Drama",
"TriStar",
Arrays.asList(new String[]{"Tom Hanks", "Jackie Gleason", "Hector Elizondo", "Barry Corbin"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Lost Boys",
dateFormat.parse("31-Jul-1987"),
32222567,
"Horror",
"Warner",
Arrays.asList(new String[]{"Jason Patric", "Corey Haim", "Dianne Wiest", "Barnard Hughes", "Edward Herrmann"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Accused",
dateFormat.parse("14-Oct-1988"),
32069318,
"Drama",
"Paramount",
Arrays.asList(new String[]{"Kelly McGillis", "Jodie Foster"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Psycho II",
dateFormat.parse("3-Jun-1983"),
32000000,
"Horror",
"Universal",
Arrays.asList(new String[]{"Robert Loggia", "Dennis Franz"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Lean on Me",
dateFormat.parse("3-Mar-1989"),
31906454,
"Character Drama",
"Warner",
Arrays.asList(new String[]{"Morgan Freeman", "Alan North"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Dressed to Kill",
dateFormat.parse("25-Jul-1980"),
31899000,
"Thriller",
"Filmways Pictures",
Arrays.asList(new String[]{"Michael Caine", "Nancy Allen", "Keith Gordon", "Dennis Franz"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Children of a Lesser God",
dateFormat.parse("3-Oct-1986"),
31853080,
"Drama",
"Paramount",
Arrays.asList(new String[]{"William Hurt"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Ours, L'",
dateFormat.parse("25-Oct-1989"),
31753898,
"Drama",
"Price-Renn Productions",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"History of the World: Part I",
dateFormat.parse("12-Jun-1981"),
31672907,
"Comedy",
"Brooksfilms",
Arrays.asList(new String[]{"Mel Brooks", "Dom DeLuise", "Madeline Kahn", "Cloris Leachman"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Can't Buy Me Love",
dateFormat.parse("14-Aug-1987"),
31623833,
"Romantic Comedy",
"Touchstone",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Bustin' Loose",
dateFormat.parse("22-May-1981"),
31261269,
"Comedy",
"Universal",
Arrays.asList(new String[]{"Richard Pryor"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Great Muppet Caper",
dateFormat.parse("26-Jun-1981"),
31206251,
"Musical Comedy",
"Universal",
Arrays.asList(new String[]{"Jim Henson", "Frank Oz", "Dave Goelz", "Richard Hunt"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Endless Love",
dateFormat.parse("17-Jul-1981"),
31184024,
"Romantic Drama",
"PolyGram",
Arrays.asList(new String[]{"Brooke Shields"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Conan the Destroyer",
dateFormat.parse("29-Jun-1984"),
31042035,
"Action-Adventure",
"De Laurentiis",
Arrays.asList(new String[]{"Arnold Schwarzenegger", "Grace Jones", "Mako"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Princess Bride",
dateFormat.parse("25-Sep-1987"),
30857814,
"Romantic Comedy",
"Act III Communications",
Arrays.asList(new String[]{"Cary Elwes", "Mandy Patinkin", "Chris Sarandon"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Murphy's Romance",
dateFormat.parse("25-Dec-1985"),
30762621,
"Romantic Comedy",
"Columbia",
Arrays.asList(new String[]{"Sally Field", "James Garner", "Corey Haim"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Young Doctors in Love",
dateFormat.parse("16-Jul-1982"),
30688860,
"Comedy",
"20th Century Fox",
Arrays.asList(new String[]{"Sean Young", "Michael McKean"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"An American Werewolf in London",
dateFormat.parse("21-Aug-1981"),
30565292,
"Monster Comedy",
"PolyGram",
Arrays.asList(new String[]{"Griffin Dunne"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Uncommon Valor",
dateFormat.parse("16-Dec-1983"),
30503151,
"War",
"Paramount",
Arrays.asList(new String[]{"Gene Hackman", "Fred Ward"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Yentl",
dateFormat.parse("18-Nov-1983"),
30400000,
"Romantic Drama",
"Barwood Films",
Arrays.asList(new String[]{"Barbra Streisand", "Mandy Patinkin", "Amy Irving"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Weekend at Bernie's",
dateFormat.parse("5-Jul-1989"),
30218387,
"Dark Comedy",
"20th Century Fox",
Arrays.asList(new String[]{"Andrew McCarthy", "Catherine Mary Stewart"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Revenge of the Nerds II: Nerds in Paradise",
dateFormat.parse("10-Jul-1987"),
30063289,
"Comedy",
"Interscope",
Arrays.asList(new String[]{"Robert Carradine", "Curtis Armstrong", "Timothy Busfield"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Road House",
dateFormat.parse("19-May-1989"),
30050028,
"Drama",
"Silver Pictures",
Arrays.asList(new String[]{"Patrick Swayze", "Sam Elliott"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"A Nightmare on Elm Street Part 2: Freddy's Revenge",
dateFormat.parse("1-Nov-1985"),
29999213,
"Horror",
"New Line",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Harry and the Hendersons",
dateFormat.parse("5-Jun-1987"),
29760613,
"Comedy",
"Universal",
Arrays.asList(new String[]{"John Lithgow", "Melinda Dillon"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Never Cry Wolf",
dateFormat.parse("7-Oct-1983"),
29600000,
"Drama",
"Disney",
Arrays.asList(new String[]{"Charles Martin Smith", "Brian Dennehy"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Twilight Zone: The Movie",
dateFormat.parse("24-Jun-1983"),
29500000,
"Horror",
"Warner",
Arrays.asList(new String[]{"Dan Aykroyd", "Albert Brooks"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Easy Money",
dateFormat.parse("19-Aug-1983"),
29309766,
"Comedy",
"Orion",
Arrays.asList(new String[]{"Rodney Dangerfield", "Joe Pesci", "Geraldine Fitzgerald"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Shoot to Kill",
dateFormat.parse("12-Feb-1988"),
29300090,
"Crime Drama",
"Touchstone",
Arrays.asList(new String[]{"Sidney Poitier", "Tom Berenger", "Kirstie Alley", "Richard Masur"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Fort Apache the Bronx",
dateFormat.parse("6-Feb-1981"),
29200000,
"Crime Drama",
"Time-Life",
Arrays.asList(new String[]{"Paul Newman", "Danny Aiello", "Rachel Ticotin"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Dream Team",
dateFormat.parse("7-Apr-1989"),
28890240,
"Comedy",
"Universal",
Arrays.asList(new String[]{"Michael Keaton", "Christopher Lloyd", "Peter Boyle"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Last Starfighter",
dateFormat.parse("13-Jul-1984"),
28733290,
"Adventure",
"Universal",
Arrays.asList(new String[]{"Lance Guest", "Catherine Mary Stewart"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Neighbors",
dateFormat.parse("18-Dec-1981"),
28732057,
"Comedy",
"Columbia",
Arrays.asList(new String[]{"John Belushi", "Cathy Moriarty", "Dan Aykroyd"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Starman",
dateFormat.parse("14-Dec-1984"),
28700000,
"Romantic Drama",
"Columbia",
Arrays.asList(new String[]{"Jeff Bridges", "Karen Allen", "Charles Martin Smith"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Hoosiers",
dateFormat.parse("14-Nov-1986"),
28607524,
"Drama",
"Hemdale",
Arrays.asList(new String[]{"Gene Hackman", "Barbara Hershey", "Dennis Hopper"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"High Road to China",
dateFormat.parse("18-Mar-1983"),
28400000,
"Adventure",
"Golden Harvest",
Arrays.asList(new String[]{"Tom Selleck", "Bess Armstrong", "Wilford Brimley"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Ernest Saves Christmas",
dateFormat.parse("11-Nov-1988"),
28202109,
"Comedy",
"Touchstone",
Arrays.asList(new String[]{"Jim Varney"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Cannonball Run II",
dateFormat.parse("29-Jun-1984"),
28100000,
"Action Comedy",
"Warner",
Arrays.asList(new String[]{"Burt Reynolds", "Dom DeLuise", "Dean Martin"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Police Academy 4: Citizens on Patrol",
dateFormat.parse("3-Apr-1987"),
28061343,
"Comedy",
"Warner",
Arrays.asList(new String[]{"Steve Guttenberg", "Bubba Smith", "Michael Winslow", "David Graf"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Soul Man",
dateFormat.parse("24-Oct-1986"),
27820000,
"Comedy",
"Balcor Film Investors",
Arrays.asList(new String[]{"C. Thomas Howell", "Rae Dawn Chong", "James Earl Jones"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Do the Right Thing",
dateFormat.parse("30-Jun-1989"),
27545445,
"Drama",
"40 Acres and a Mule",
Arrays.asList(new String[]{"Danny Aiello"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Dune",
dateFormat.parse("14-Dec-1984"),
27400000,
"Drama",
"Universal",
Arrays.asList(new String[]{"Brad Dourif", "José Ferrer"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Airplane II: The Sequel",
dateFormat.parse("10-Dec-1982"),
27150534,
"Comedy",
"Paramount",
Arrays.asList(new String[]{"Robert Hays", "Julie Hagerty", "Lloyd Bridges", "Peter Graves"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Jazz Singer",
dateFormat.parse("17-Dec-1980"),
27118000,
"Drama",
"EMI Films",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Flash Gordon",
dateFormat.parse("5-Dec-1980"),
27107960,
"Action",
"Universal",
Arrays.asList(new String[]{"Max von Sydow", "Topol"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"All Dogs Go to Heaven",
dateFormat.parse("17-Nov-1989"),
27100027,
"Drama",
"Goldcrest Films International",
Arrays.asList(new String[]{"Burt Reynolds", "Dom DeLuise"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Fast Times at Ridgemont High",
dateFormat.parse("13-Aug-1982"),
27092880,
"Comedy",
"Universal",
Arrays.asList(new String[]{"Sean Penn", "Jennifer Jason Leigh", "Judge Reinhold"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Glory",
dateFormat.parse("15-Dec-1989"),
26830000,
"War",
"TriStar",
Arrays.asList(new String[]{"Matthew Broderick", "Denzel Washington", "Cary Elwes", "Morgan Freeman"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Overboard",
dateFormat.parse("16-Dec-1987"),
26713187,
"Romantic Comedy",
"MGM",
Arrays.asList(new String[]{"Goldie Hawn", "Kurt Russell", "Edward Herrmann", "Katherine Helmond"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Baby Boom",
dateFormat.parse("7-Oct-1987"),
26712476,
"Comedy",
"Meyers/Shyer",
Arrays.asList(new String[]{"Diane Keaton", "Sam Shepard", "Harold Ramis"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Prizzi's Honor",
dateFormat.parse("13-Jun-1985"),
26700000,
"Crime Drama",
"ABC",
Arrays.asList(new String[]{"Jack Nicholson", "Kathleen Turner", "Robert Loggia", "John Randolph"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"A Passage to India",
dateFormat.parse("14-Dec-1984"),
26400000,
"Mystery",
"HBO",
Arrays.asList(new String[]{"Alec Guinness"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Protocol",
dateFormat.parse("21-Dec-1984"),
26300000,
"Comedy",
"Warner",
Arrays.asList(new String[]{"Goldie Hawn", "Chris Sarandon"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Wildcats",
dateFormat.parse("14-Feb-1986"),
26285544,
"Comedy",
"Warner",
Arrays.asList(new String[]{"Goldie Hawn", "Swoosie Kurtz"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Private Lessons",
dateFormat.parse("26-Aug-1981"),
26279000,
"Comedy",
"Jensen Farley Pictures",
Arrays.asList(new String[]{"Howard Hesseman"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Micki + Maude",
dateFormat.parse("21-Dec-1984"),
26200000,
"Romantic Comedy",
"Columbia",
Arrays.asList(new String[]{"Dudley Moore", "Amy Irving", "Richard Mulligan"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Blade Runner",
dateFormat.parse("25-Jun-1982"),
26168988,
"Drama",
"The Ladd Company",
Arrays.asList(new String[]{"Harrison Ford", "Rutger Hauer", "Sean Young", "Edward James Olmos", "M. Emmet Walsh"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Modern Problems",
dateFormat.parse("25-Dec-1981"),
26154211,
"Comedy",
"20th Century Fox",
Arrays.asList(new String[]{"Chevy Chase", "Dabney Coleman"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Elephant Man",
dateFormat.parse("3-Oct-1980"),
26000000,
"Character Drama",
"Brooksfilms",
Arrays.asList(new String[]{"Anthony Hopkins", "John Hurt", "John Gielgud"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Cotton Club",
dateFormat.parse("10-Dec-1984"),
25900000,
"Drama",
"Zoetrope",
Arrays.asList(new String[]{"Richard Gere", "Gregory Hines", "Diane Lane", "Lonette McKee", "Bob Hoskins"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Innerspace",
dateFormat.parse("1-Jul-1987"),
25893810,
"Action Comedy",
"Warner",
Arrays.asList(new String[]{"Dennis Quaid", "Martin Short", "Meg Ryan", "Kevin McCarthy"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Betrayed",
dateFormat.parse("26-Aug-1988"),
25816139,
"Thriller",
"United Artists",
Arrays.asList(new String[]{"Debra Winger", "Tom Berenger", "John Heard"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Last Dragon",
dateFormat.parse("22-Mar-1985"),
25800000,
"Action Comedy",
"Delphi III Productions",
Arrays.asList(new String[]{"Vanity"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Masters of the Universe",
dateFormat.parse("7-Aug-1987"),
25721000,
"Action-Adventure",
"Cannon",
Arrays.asList(new String[]{"Dolph Lundgren", "Meg Foster", "Courteney Cox"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Outsiders",
dateFormat.parse("25-Mar-1983"),
25600000,
"Crime Drama",
"Zoetrope",
Arrays.asList(new String[]{"Matt Dillon", "Ralph Macchio", "C. Thomas Howell", "Patrick Swayze", "Rob Lowe"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Jumpin' Jack Flash",
dateFormat.parse("10-Oct-1986"),
25587804,
"Action Comedy",
"20th Century Fox",
Arrays.asList(new String[]{"Whoopi Goldberg", "Stephen Collins", "Carol Kane", "Annie Potts"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Funny Farm",
dateFormat.parse("3-Jun-1988"),
25537221,
"Comedy",
"Warner",
Arrays.asList(new String[]{"Chevy Chase"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Muppets Take Manhattan",
dateFormat.parse("13-Jul-1984"),
25534703,
"Musical Comedy",
"TriStar",
Arrays.asList(new String[]{"Jim Henson", "Frank Oz", "Dave Goelz", "Richard Hunt"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Halloween II",
dateFormat.parse("30-Oct-1981"),
25533818,
"Horror",
"Universal",
Arrays.asList(new String[]{"Jamie Lee Curtis", "Donald Pleasence", "Lance Guest"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Only When I Laugh",
dateFormat.parse("23-Sep-1981"),
25524778,
"Drama",
"Columbia",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"A Nightmare on Elm Street",
dateFormat.parse("9-Nov-1984"),
25504513,
"Horror",
"New Line",
Arrays.asList(new String[]{"Heather Langenkamp"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Tin Men",
dateFormat.parse("6-Mar-1987"),
25411386,
"Character Drama",
"Touchstone",
Arrays.asList(new String[]{"Richard Dreyfuss", "Danny DeVito", "Barbara Hershey"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Heartburn",
dateFormat.parse("25-Jul-1986"),
25314289,
"Romantic Drama",
"Paramount",
Arrays.asList(new String[]{"Meryl Streep", "Jack Nicholson", "Jeff Daniels", "Maureen Stapleton"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Escape from New York",
dateFormat.parse("10-Jul-1981"),
25244700,
"Action",
"Goldcrest Films International",
Arrays.asList(new String[]{"Kurt Russell", "Lee Van Cleef", "Ernest Borgnine", "Donald Pleasence"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Alien Nation",
dateFormat.parse("7-Oct-1988"),
25216243,
"Crime Drama",
"20th Century Fox",
Arrays.asList(new String[]{"Mandy Patinkin", "Terence Stamp"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Black Widow",
dateFormat.parse("6-Feb-1987"),
25205460,
"Thriller",
"20th Century Fox",
Arrays.asList(new String[]{"Debra Winger", "Dennis Hopper"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Against All Odds",
dateFormat.parse("2-Mar-1984"),
25100000,
"Thriller",
"Columbia",
Arrays.asList(new String[]{"Jeff Bridges"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Moscow on the Hudson",
dateFormat.parse("6-Apr-1984"),
25100000,
"Drama",
"Columbia",
Arrays.asList(new String[]{"Robin Williams", "Maria Conchita Alonso"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Fright Night",
dateFormat.parse("2-Aug-1985"),
24922000,
"Horror",
"Columbia",
Arrays.asList(new String[]{"Chris Sarandon"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Sex, Lies, and Videotape",
dateFormat.parse("4-Aug-1989"),
24741700,
"Drama",
"Outlaw Productions",
Arrays.asList(new String[]{"James Spader", "Andie MacDowell"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Gorillas in the Mist: The Story of Dian Fossey",
dateFormat.parse("23-Sep-1988"),
24720479,
"Drama",
"Warner",
Arrays.asList(new String[]{"Sigourney Weaver", "Bryan Brown"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Summer Rental",
dateFormat.parse("9-Aug-1985"),
24689703,
"Comedy",
"Paramount",
Arrays.asList(new String[]{"John Candy", "Joseph Lawrence"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Emerald Forest",
dateFormat.parse("3-Jul-1985"),
24467000,
"Adventure",
"Embassy",
Arrays.asList(new String[]{"Meg Foster"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Morning After",
dateFormat.parse("25-Dec-1986"),
24355941,
"Mystery",
"Lorimar",
Arrays.asList(new String[]{"Jane Fonda", "Jeff Bridges", "Raul Julia"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Bronco Billy",
dateFormat.parse("11-Jun-1980"),
24265659,
"Drama",
"Warner",
Arrays.asList(new String[]{"Clint Eastwood", "Sondra Locke", "Geoffrey Lewis", "Scatman Crothers"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Iron Eagle",
dateFormat.parse("17-Jan-1986"),
24159872,
"Action",
"TriStar",
Arrays.asList(new String[]{"Louis Gossett Jr.", "Tim Thomerson"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Spring Break",
dateFormat.parse("25-Mar-1983"),
24071666,
"Comedy",
"Columbia",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Body Heat",
dateFormat.parse("28-Aug-1981"),
24058838,
"Thriller",
"The Ladd Company",
Arrays.asList(new String[]{"William Hurt", "Kathleen Turner", "Richard Crenna", "Ted Danson"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Flamingo Kid",
dateFormat.parse("21-Dec-1984"),
23859382,
"Romantic Drama",
"20th Century Fox",
Arrays.asList(new String[]{"Matt Dillon", "Hector Elizondo", "Richard Crenna"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Weird Science",
dateFormat.parse("2-Aug-1985"),
23834000,
"Comedy",
"Universal",
Arrays.asList(new String[]{"Anthony Michael Hall", "Bill Paxton"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Sixteen Candles",
dateFormat.parse("4-May-1984"),
23686027,
"Romantic Comedy",
"Universal",
Arrays.asList(new String[]{"Molly Ringwald", "Gedde Watanabe"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Mad Max 2",
dateFormat.parse("28-Apr-1982"),
23667907,
"Action",
"Kennedy Miller Productions",
Arrays.asList(new String[]{"Mel Gibson"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Two of a Kind",
dateFormat.parse("16-Dec-1983"),
23646952,
"Romantic Comedy",
"20th Century Fox",
Arrays.asList(new String[]{"John Travolta", "Olivia Newton-John", "Charles Durning"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Night Shift",
dateFormat.parse("30-Jul-1982"),
23600000,
"Comedy",
"The Ladd Company",
Arrays.asList(new String[]{"Henry Winkler", "Michael Keaton", "Shelley Long"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Ernest Goes to Camp",
dateFormat.parse("22-May-1987"),
23509382,
"Comedy",
"Touchstone",
Arrays.asList(new String[]{"Jim Varney"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Santa Claus",
dateFormat.parse("29-Nov-1985"),
23500000,
"Comedy",
"TriStar",
Arrays.asList(new String[]{"Dudley Moore", "John Lithgow", "Burgess Meredith"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Ghost Story",
dateFormat.parse("15-Dec-1981"),
23371905,
"Horror",
"Universal",
Arrays.asList(new String[]{"Douglas Fairbanks Jr.", "John Houseman"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Raging Bull",
dateFormat.parse("14-Nov-1980"),
23334953,
"Character Drama",
"Chartoff-Winkler Productions",
Arrays.asList(new String[]{"Robert De Niro", "Cathy Moriarty", "Joe Pesci"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Long Riders",
dateFormat.parse("16-May-1980"),
23000000,
"Drama",
"Huka Productions",
Arrays.asList(new String[]{"Robert Carradine"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"American Gigolo",
dateFormat.parse("1-Feb-1980"),
23000000,
"Drama",
"Paramount",
Arrays.asList(new String[]{"Richard Gere", "Hector Elizondo", "Bill Duke"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Care Bears Movie",
dateFormat.parse("29-Mar-1985"),
22934000,
"Comedy",
"Samuel Goldwyn",
Arrays.asList(new String[]{"Mickey Rooney"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Crimes of the Heart",
dateFormat.parse("12-Dec-1986"),
22905500,
"Drama",
"De Laurentiis",
Arrays.asList(new String[]{"Diane Keaton", "Jessica Lange", "Sissy Spacek", "Sam Shepard"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Raising Arizona",
dateFormat.parse("6-Mar-1987"),
22847564,
"Action Comedy",
"Circle Films",
Arrays.asList(new String[]{"Nicolas Cage", "Holly Hunter", "Trey Wilson", "John Goodman"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Missing in Action",
dateFormat.parse("16-Nov-1984"),
22812500,
"War",
"Cannon",
Arrays.asList(new String[]{"Chuck Norris", "M. Emmet Walsh"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Xanadu",
dateFormat.parse("8-Aug-1980"),
22762571,
"Musical Comedy",
"Universal",
Arrays.asList(new String[]{"Olivia Newton-John"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The French Lieutenant's Woman",
dateFormat.parse("18-Sep-1981"),
22600000,
"Romantic Drama",
"Juniper Films",
Arrays.asList(new String[]{"Meryl Streep", "Jeremy Irons"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"My Tutor",
dateFormat.parse("4-Mar-1983"),
22587000,
"Drama",
"Crown International Pictures",
Arrays.asList(new String[]{"Kevin McCarthy"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"My Bodyguard",
dateFormat.parse("11-Jul-1980"),
22482952,
"Drama",
"20th Century Fox",
Arrays.asList(new String[]{"Adam Baldwin", "Matt Dillon"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"License to Drive",
dateFormat.parse("6-Jul-1988"),
22433275,
"Comedy",
"20th Century Fox",
Arrays.asList(new String[]{"Corey Haim", "Corey Feldman", "Carol Kane", "Richard Masur"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Benji the Hunted",
dateFormat.parse("5-Jun-1987"),
22257624,
"Adventure",
"Disney",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Pink Floyd The Wall",
dateFormat.parse("6-Aug-1982"),
22244207,
"Drama",
"MGM",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Empire of the Sun",
dateFormat.parse("9-Dec-1987"),
22238696,
"Drama",
"Warner",
Arrays.asList(new String[]{"John Malkovich", "Nigel Havers", "Joe Pantoliano"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"A Nightmare on Elm Street: The Dream Child",
dateFormat.parse("11-Aug-1989"),
22168359,
"Horror",
"New Line",
Arrays.asList(new String[]{"Robert Englund"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Lock Up",
dateFormat.parse("4-Aug-1989"),
22099847,
"Thriller",
"Carolco",
Arrays.asList(new String[]{"Sylvester Stallone", "Donald Sutherland", "John Amos"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Cousins",
dateFormat.parse("10-Feb-1989"),
22030000,
"Romantic Comedy",
"Paramount",
Arrays.asList(new String[]{"Ted Danson", "Isabella Rossellini", "Sean Young", "Lloyd Bridges"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Victor/Victoria",
dateFormat.parse("16-Mar-1982"),
21933614,
"Musical Comedy",
"MGM",
Arrays.asList(new String[]{"James Garner"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Friday the 13th: A New Beginning",
dateFormat.parse("22-Mar-1985"),
21930418,
"Horror",
"Paramount",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"A Soldier's Story",
dateFormat.parse("14-Sep-1984"),
21821347,
"Mystery",
"Columbia",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Friday the 13th Part 2",
dateFormat.parse("1-May-1981"),
21722776,
"Horror",
"Paramount",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Short Circuit 2",
dateFormat.parse("6-Jul-1988"),
21630088,
"Comedy",
"TriStar",
Arrays.asList(new String[]{"Fisher Stevens", "Michael McKean"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Oh, God! You Devil",
dateFormat.parse("7-Nov-1984"),
21538850,
"Comedy",
"Warner",
Arrays.asList(new String[]{"George Burns"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Right Stuff",
dateFormat.parse("21-Oct-1983"),
21500000,
"Adventure",
"The Ladd Company",
Arrays.asList(new String[]{"Sam Shepard", "Scott Glenn", "Ed Harris", "Dennis Quaid", "Fred Ward"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Married to the Mob",
dateFormat.parse("19-Aug-1988"),
21486757,
"Comedy",
"Orion",
Arrays.asList(new String[]{"Alec Baldwin"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Tough Guys",
dateFormat.parse("3-Oct-1986"),
21458229,
"Comedy",
"Touchstone",
Arrays.asList(new String[]{"Burt Lancaster", "Kirk Douglas", "Charles Durning", "Dana Carvey"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Rhinestone",
dateFormat.parse("20-Jun-1984"),
21435321,
"Comedy",
"20th Century Fox",
Arrays.asList(new String[]{"Sylvester Stallone", "Dolly Parton", "Tim Thomerson"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Fog",
dateFormat.parse("8-Feb-1980"),
21378000,
"Horror",
"Embassy",
Arrays.asList(new String[]{"Adrienne Barbeau", "Jamie Lee Curtis", "Janet Leigh", "John Houseman"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Fame",
dateFormat.parse("16-May-1980"),
21202829,
"Drama",
"MGM",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Christine",
dateFormat.parse("9-Dec-1983"),
21200000,
"Horror",
"Columbia",
Arrays.asList(new String[]{"Keith Gordon", "Alexandra Paul", "Harry Dean Stanton"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Cujo",
dateFormat.parse("12-Aug-1983"),
21200000,
"Horror",
"Sunn Classic Pictures",
Arrays.asList(new String[]{"Dee Wallace-Stone"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Things Are Tough All Over",
dateFormat.parse("9-Apr-1982"),
21134374,
"Action Comedy",
"Columbia",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Weekend Pass",
dateFormat.parse("3-Feb-1984"),
21058000,
"Comedy",
"Marimark Productions",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Punchline",
dateFormat.parse("7-Oct-1988"),
21032267,
"Drama",
"Columbia",
Arrays.asList(new String[]{"Sally Field", "Tom Hanks", "John Goodman"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Ragtime",
dateFormat.parse("20-Nov-1981"),
21015710,
"Drama",
"De Laurentiis",
Arrays.asList(new String[]{"Brad Dourif", "Elizabeth McGovern"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Black Cauldron",
dateFormat.parse("24-Jul-1985"),
21000000,
"Drama",
"Disney",
Arrays.asList(new String[]{"Freddie Jones"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"A Room with a View",
dateFormat.parse("7-Mar-1986"),
20966644,
"Romantic Drama",
"Goldcrest Films International",
Arrays.asList(new String[]{"Helena Bonham Carter", "Denholm Elliott", "Julian Sands", "Simon Callow"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Say Anything...",
dateFormat.parse("14-Apr-1989"),
20781385,
"Romantic Drama",
"20th Century Fox",
Arrays.asList(new String[]{"John Cusack", "Ione Skye"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Dead Zone",
dateFormat.parse("21-Oct-1983"),
20766000,
"Horror",
"De Laurentiis",
Arrays.asList(new String[]{"Christopher Walken", "Tom Skerritt"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Jaws: The Revenge",
dateFormat.parse("17-Jul-1987"),
20763013,
"Horror",
"Universal",
Arrays.asList(new String[]{"Lance Guest", "Michael Caine", "Karen Young"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Man from Snowy River",
dateFormat.parse("5-Nov-1982"),
20659423,
"Romantic Drama",
"Cambridge Films",
Arrays.asList(new String[]{"Kirk Douglas"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"F/X",
dateFormat.parse("7-Feb-1986"),
20603715,
"Action",
"Orion",
Arrays.asList(new String[]{"Bryan Brown", "Brian Dennehy", "Cliff De Young"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Porky's Revenge",
dateFormat.parse("22-Mar-1985"),
20518905,
"Comedy",
"20th Century Fox",
Arrays.asList(new String[]{"Dan Monahan"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Top Secret!",
dateFormat.parse("8-Jun-1984"),
20500000,
"Comedy",
"Paramount",
Arrays.asList(new String[]{"Val Kilmer"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Final Conflict",
dateFormat.parse("20-Mar-1981"),
20471342,
"Horror",
"20th Century Fox",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Hello Again",
dateFormat.parse("6-Nov-1987"),
20419446,
"Comedy",
"Touchstone",
Arrays.asList(new String[]{"Shelley Long", "Gabriel Byrne", "Corbin Bernsen"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Some Kind of Hero",
dateFormat.parse("2-Apr-1982"),
20400486,
"Drama",
"Paramount",
Arrays.asList(new String[]{"Richard Pryor", "Ronny Cox"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Incredible Shrinking Woman",
dateFormat.parse("30-Jan-1981"),
20259961,
"Comedy",
"Universal",
Arrays.asList(new String[]{"Lily Tomlin", "Charles Grodin", "Ned Beatty", "Elizabeth Wilson"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Action Jackson",
dateFormat.parse("12-Feb-1988"),
20257000,
"Action",
"Lorimar",
Arrays.asList(new String[]{"Carl Weathers", "Craig T. Nelson", "Vanity", "Sharon Stone", "Thomas F. Wilson"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Critical Condition",
dateFormat.parse("16-Jan-1987"),
20240502,
"Comedy",
"Paramount",
Arrays.asList(new String[]{"Richard Pryor", "Rachel Ticotin", "Joe Mantegna"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Six Pack",
dateFormat.parse("16-Jul-1982"),
20225989,
"Drama",
"20th Century Fox",
Arrays.asList(new String[]{"Diane Lane", "Barry Corbin"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Neverending Story",
dateFormat.parse("20-Jul-1984"),
20158808,
"Adventure",
"Warner",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"My Favorite Year",
dateFormat.parse("1-Oct-1982"),
20123620,
"Comedy",
"MGM",
Arrays.asList(new String[]{"Peter O'Toole"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"An Innocent Man",
dateFormat.parse("6-Oct-1989"),
20047604,
"Crime Drama",
"Touchstone",
Arrays.asList(new String[]{"Tom Selleck", "F. Murray Abraham"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Presidio",
dateFormat.parse("10-Jun-1988"),
20036242,
"Crime Drama",
"Paramount",
Arrays.asList(new String[]{"Sean Connery", "Mark Harmon", "Meg Ryan", "Jack Warden"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Fly II",
dateFormat.parse("10-Feb-1989"),
20021322,
"Horror",
"Brooksfilms",
Arrays.asList(new String[]{"Eric Stoltz"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Breathless",
dateFormat.parse("13-May-1983"),
19900000,
"Thriller",
"Miko Productions",
Arrays.asList(new String[]{"Richard Gere"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Volunteers",
dateFormat.parse("16-Aug-1985"),
19875740,
"Comedy",
"TriStar",
Arrays.asList(new String[]{"Tom Hanks", "John Candy", "Tim Thomerson", "Gedde Watanabe"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Altered States",
dateFormat.parse("25-Dec-1980"),
19853892,
"Horror",
"Warner",
Arrays.asList(new String[]{"William Hurt", "Bob Balaban"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Dad",
dateFormat.parse("27-Oct-1989"),
19738015,
"Drama",
"Amblin",
Arrays.asList(new String[]{"Jack Lemmon", "Ted Danson", "Olympia Dukakis", "Kevin Spacey"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Principal",
dateFormat.parse("18-Sep-1987"),
19734940,
"Drama",
"TriStar",
Arrays.asList(new String[]{"James Belushi", "Louis Gossett Jr.", "Rae Dawn Chong"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Creepshow",
dateFormat.parse("10-Nov-1982"),
19733000,
"Horror",
"Warner",
Arrays.asList(new String[]{"Hal Holbrook", "Adrienne Barbeau", "Leslie Nielsen"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Skin Deep",
dateFormat.parse("3-Mar-1989"),
19674852,
"Comedy",
"Morgan Creek",
Arrays.asList(new String[]{"Vincent Gardenia", "Julianne Phillips"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Tucker: The Man and His Dream",
dateFormat.parse("12-Aug-1988"),
19652638,
"Character Drama",
"Lucasfilm",
Arrays.asList(new String[]{"Jeff Bridges", "Joan Allen", "Martin Landau", "Mako"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Serpent and the Rainbow",
dateFormat.parse("5-Feb-1988"),
19595031,
"Horror",
"Universal",
Arrays.asList(new String[]{"Bill Pullman", "Paul Winfield"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Police Academy 5: Assignment: Miami Beach",
dateFormat.parse("18-Mar-1988"),
19510371,
"Comedy",
"Warner",
Arrays.asList(new String[]{"Bubba Smith", "David Graf", "Michael Winslow"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Friday the 13th Part VI: Jason Lives",
dateFormat.parse("1-Aug-1986"),
19472057,
"Horror",
"Paramount",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"House",
dateFormat.parse("28-Feb-1986"),
19445000,
"Horror",
"New World Pictures",
Arrays.asList(new String[]{"George Wendt"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"A Christmas Story",
dateFormat.parse("18-Nov-1983"),
19294144,
"Comedy",
"MGM",
Arrays.asList(new String[]{"Melinda Dillon", "Scott Schwartz"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Best Defense",
dateFormat.parse("20-Jul-1984"),
19265302,
"Comedy",
"Paramount",
Arrays.asList(new String[]{"Dudley Moore", "Eddie Murphy", "Kate Capshaw", "Helen Shaver"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Friday the 13th Part VII: The New Blood",
dateFormat.parse("13-May-1988"),
19170001,
"Horror",
"Paramount",
Arrays.asList(new String[]{})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Blaze",
dateFormat.parse("13-Dec-1989"),
19131246,
"Character Drama",
"Touchstone",
Arrays.asList(new String[]{"Paul Newman"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Mommie Dearest",
dateFormat.parse("16-Sep-1981"),
19032000,
"Character Drama",
"Paramount",
Arrays.asList(new String[]{"Steve Forrest"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Octagon",
dateFormat.parse("14-Aug-1980"),
18971000,
"Action",
"American Cinema Productions",
Arrays.asList(new String[]{"Chuck Norris", "Lee Van Cleef"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Cocoon: The Return",
dateFormat.parse("23-Nov-1988"),
18924919,
"Comedy",
"20th Century Fox",
Arrays.asList(new String[]{"Don Ameche", "Wilford Brimley", "Courteney Cox", "Hume Cronyn", "Jack Gilford"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Seventh Sign",
dateFormat.parse("1-Apr-1988"),
18875011,
"Thriller",
"TriStar",
Arrays.asList(new String[]{"Demi Moore", "Michael Biehn", "Jürgen Prochnow"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Above the Law",
dateFormat.parse("8-Apr-1988"),
18869631,
"Crime Drama",
"Warner",
Arrays.asList(new String[]{"Pam Grier"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Under the Rainbow",
dateFormat.parse("31-Jul-1981"),
18826490,
"Comedy",
"Warner",
Arrays.asList(new String[]{"Chevy Chase", "Carrie Fisher"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Suspect",
dateFormat.parse("23-Oct-1987"),
18782400,
"Crime Drama",
"ML Delphi Premier Productions",
Arrays.asList(new String[]{"Cher", "Dennis Quaid", "Liam Neeson", "Joe Mantegna"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"The Believers",
dateFormat.parse("10-Jun-1987"),
18753438,
"Horror",
"Orion",
Arrays.asList(new String[]{"Martin Sheen", "Helen Shaver", "Robert Loggia", "Elizabeth Wilson"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Year of the Dragon",
dateFormat.parse("16-Aug-1985"),
18707466,
"Crime Drama",
"MGM",
Arrays.asList(new String[]{"Mickey Rourke", "John Lone"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Her Alibi",
dateFormat.parse("3-Feb-1989"),
18699037,
"Romantic Comedy",
"Warner",
Arrays.asList(new String[]{"Tom Selleck", "William Daniels"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Casualties of War",
dateFormat.parse("18-Aug-1989"),
18671317,
"War",
"Columbia",
Arrays.asList(new String[]{"Michael J. Fox", "Sean Penn"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Blame It on Rio",
dateFormat.parse("17-Feb-1984"),
18600000,
"Romantic Comedy",
"Sherwood",
Arrays.asList(new String[]{"Michael Caine", "Demi Moore"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Prancer",
dateFormat.parse("17-Nov-1989"),
18587135,
"Drama",
"Cineplex-Odeon Films",
Arrays.asList(new String[]{"Sam Elliott", "Cloris Leachman", "Abe Vigoda"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Flight of the Navigator",
dateFormat.parse("30-Jul-1986"),
18564613,
"Adventure",
"Disney",
Arrays.asList(new String[]{"Paul Reubens", "Veronica Cartwright", "Cliff De Young", "Sarah Jessica Parker"})
));
movies.add(new Movie(facetSpace,
movies.size(),
"Some Kind of Wonderful",
dateFormat.parse("27-Feb-1987"),
18553948,
"Romantic Drama",
"Paramount",
Arrays.asList(new String[]{"Eric Stoltz", "Mary Stuart Masterson", "Lea Thompson"})
));
return movies;
}
}
MovieFacets again, is a subclass of SimpleFacetSpace and contains a lot of code regarding the different facets and their headings. The facets are something like genre, studio, actors etc. Some headings you will find in this class are called Crime Drama, 20th Century Fox or Al Pachino. Now you should be getting a clearer picture. Each Movie is mapped to different headings, that exist in the MovieFacetSpace. For instance the movie E.T. the Extra-Terrestrial is mapped to the headings Drama, Universal, Drew Barrymore etc. And by the way, this is one of my favourite movies.
MovieFacets.java
package javasplitter.web.facetmap;
import com.facetmap.simple.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;
/*
* Sample use of Facetmap 2.0
* (c) 2007 by Complete Information Architecture and Travis Wilson.
*
* All source code in package "com.facetmap.example" or its subpackages
* (the "Sample Code") uses Facetmap software to enable faceted browsing of
* its data. The data in this program is fictitious and is not intended for
* any use other than the demonstration of Facetmap.
*
* The Sample Code is distributed in the hope that it will be informative,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
/**
* Wraps movie classification values in Facet objects, which gives us a
* FacetSpace that the Facetmap can use. This FacetSpace is used as the
* underlying FacetSpace of {@link MovieResourceSpace}.
*/
public class MovieFacets extends SimpleFacetSpace
{
public MovieFacets()
{
// Create Genre facet (Taxonomy)
SimpleTaxonomyFacet genre = new SimpleTaxonomyFacet("genre", "Genre", "Any Genre");
for (int i = 0; i < Genres.length; i++)
{
genre.addHeading(new SimpleTaxonomyHeading(Genres[i]));
}
SimpleTaxonomyHeading comedic = new SimpleTaxonomyHeading("Comedic");
genre.addHeading(comedic);
for (int i = 0; i < ComedicGenres.length; i++)
{
genre.appendHeadingInto(new SimpleTaxonomyHeading(ComedicGenres[i]), comedic);
}
SimpleTaxonomyHeading dramatic = new SimpleTaxonomyHeading("Dramatic");
genre.addHeading(dramatic);
for (int i = 0; i < DramaticGenres.length; i++)
{
genre.appendHeadingInto(new SimpleTaxonomyHeading(DramaticGenres[i]), dramatic);
}
addFacet(genre);
// Create Box Office facet (Spectrum)
SimpleSpectrumFacet boxOffice = new SimpleSpectrumFacet("boxOffice", "Domestic Box Office Gross");
boxOffice.setConformsRootHeadingToResources(true);
addFacet(boxOffice);
// Create Release Date facet (Date)
try
{
DateFormat dateFormat = new SimpleDateFormat("d-MMM-yyyy");
SimpleDateFacet release = new SimpleDateFacet(
"releaseDate", "Release Date", "Anytime",
dateFormat.parse("1-Jan-1980"), dateFormat.parse("1-Jan-1990")
);
addFacet(release);
}
catch (ParseException exc)
{
throw new Error("Hardcoded date strings couldn't be parsed!", exc);
}
// Create Studio facet (Taxonomy)
SimpleTaxonomyFacet studio = new SimpleTaxonomyFacet("studio", "Production Studio", "Any Studio");
for (int i = 0; i < BigStudios.length; i++)
{
studio.addHeading(new SimpleTaxonomyHeading(BigStudios[i]));
}
SimpleTaxonomyHeading other = new SimpleTaxonomyHeading("other", "Other studios");
studio.addHeading(other);
for (int i = 0; i < SmallStudios.length; i++)
{
studio.appendHeadingInto(new SimpleTaxonomyHeading(SmallStudios[i]), other);
}
addFacet(studio);
// Create Actor facet (Compound Taxonomy)
SimpleTaxonomyFacet actorTaxonomy = new SimpleTaxonomyFacet("actors", "Actors", "No preference");
for (int i = 0; i < Actors.length; i++)
{
actorTaxonomy.addHeading(new SimpleTaxonomyHeading(Actors[i]));
}
SimpleCompoundHeadingFacet actors = new SimpleCompoundHeadingFacet(actorTaxonomy);
addFacet(actors);
}
public static String[] Genres = new String[]{
"Documentary"
};
public static String[] ComedicGenres = new String[]{
"Action",
"Action Comedy",
"Action-Adventure",
"Adventure",
"Comedy",
"Dark Comedy",
"Monster Comedy",
"Musical Comedy",
"Romantic Comedy"
};
public static String[] DramaticGenres = new String[]{
"Character Drama",
"Crime Drama",
"Drama",
"Horror",
"Mystery",
"Romantic Drama",
"Thriller",
"War"
};
public static String[] BigStudios = new String[]{
"20th Century Fox",
"Amblin",
"Cannon",
"Carolco",
"Castle Rock",
"Columbia",
"De Laurentiis",
"Disney",
"Geffen",
"Golden Harvest",
"Lorimar",
"Lucasfilm",
"MGM",
"Morgan Creek",
"New Line",
"Orion",
"Paramount",
"RKO",
"Touchstone",
"TriStar",
"United Artists",
"Universal",
"Warner"
};
public static String[] SmallStudios = new String[]{
"40 Acres and a Mule",
"ABC",
"Act III Communications",
"American Cinema Productions",
"Balcor Film Investors",
"Barwood Films",
"Brooksfilms",
"CAT Films",
"Cambridge Films",
"Chartoff-Winkler Productions",
"Cine Trail",
"Cinema Group Ventures",
"Cineplex-Odeon Films",
"Circle Films",
"Crown International Pictures",
"David Foster Productions",
"Delphi III Productions",
"Dovemead Films",
"EMI Films",
"Embassy",
"Empire Pictures",
"Escalante",
"Filmways Pictures",
"Gladden Entertainment",
"Goldcrest Films International",
"Gordon Company",
"HBO",
"Handmade Films",
"Hemdale",
"Huka Productions",
"Imagine",
"Imagine Entertainment",
"Interscope",
"Ixtlan",
"Jensen Farley Pictures",
"Juniper Films",
"Kennedy Miller Productions",
"ML Delphi Premier Productions",
"Majestic",
"Malpaso",
"Marimark Productions",
"Melvin Simon",
"Meyers/Shyer",
"Miko Productions",
"Mirage",
"New World Pictures",
"Outlaw Productions",
"Paper Clip",
"PolyGram",
"Price-Renn Productions",
"Rastar Films",
"Rastar Pictures",
"Samuel Goldwyn",
"Saul Zaentz",
"Screenframe",
"Sherwood",
"Silver Pictures",
"Sorcerer Productions",
"Sunn Classic Pictures",
"The Ladd Company",
"The Mount Company",
"Time-Life",
"Twin Continental",
"Vestron",
"Wolfkill",
"Zoetrope"
};
public static String[] Actors = new String[]{
"Abe Vigoda",
"Adam Baldwin",
"Adrienne Barbeau",
"Al Pacino",
"Alan Alda",
"Alan North",
"Alan Ruck",
"Albert Brooks",
"Alec Baldwin",
"Alec Guinness",
"Alex Winter",
"Alexander Godunov",
"Alexandra Paul",
"Ally Sheedy",
"Amy Irving",
"Amy Madigan",
"Andie MacDowell",
"Andrew McCarthy",
"Andy Garcia",
"Anne Archer",
"Annette Bening",
"Annette O'Toole",
"Annie Potts",
"Anthony Daniels",
"Anthony Edwards",
"Anthony Hopkins",
"Anthony Michael Hall",
"Arnold Schwarzenegger",
"Audrey Hepburn",
"Barbara Hershey",
"Barbra Streisand",
"Barnard Hughes",
"Barry Corbin",
"Ben Kingsley",
"Bernadette Peters",
"Bess Armstrong",
"Bette Midler",
"Beverly D'Angelo",
"Bill Duke",
"Bill Murray",
"Bill Paxton",
"Bill Pullman",
"Billy Crystal",
"Billy Dee Williams",
"Bo Derek",
"Bob Balaban",
"Bob Goldthwait",
"Bob Hoskins",
"Bonnie Bedelia",
"Brad Dourif",
"Brian Dennehy",
"Brigitte Nielsen",
"Brooke Shields",
"Bruce Willis",
"Bruno Kirby",
"Bryan Brown",
"Bubba Smith",
"Burgess Meredith",
"Burt Lancaster",
"Burt Reynolds",
"Burt Young",
"C. Thomas Howell",
"Candice Bergen",
"Carl Weathers",
"Carol Burnett",
"Carol Kane",
"Carrie Fisher",
"Cary Elwes",
"Catherine Hicks",
"Catherine Mary Stewart",
"Cathy Moriarty",
"Charles Durning",
"Charles Grodin",
"Charles Martin Smith",
"Charlie Sheen",
"Cheech Marin",
"Cher",
"Chevy Chase",
"Chris Penn",
"Chris Sarandon",
"Christopher Lloyd",
"Christopher Plummer",
"Christopher Reeve",
"Christopher Walken",
"Chuck Norris",
"Clarence Williams III",
"Cliff De Young",
"Clint Eastwood",
"Cloris Leachman",
"Corbin Bernsen",
"Corey Feldman",
"Corey Haim",
"Courteney Cox",
"Craig T. Nelson",
"Crispin Glover",
"Curtis Armstrong",
"Cynthia Rhodes",
"Cyril O'Reilly",
"Dabney Coleman",
"Dan Aykroyd",
"Dan Hedaya",
"Dan Monahan",
"Dana Carvey",
"Danny Aiello",
"Danny DeVito",
"Danny Glover",
"Daryl Hannah",
"Dave Goelz",
"David Graf",
"David Keith",
"David Warner",
"DeForest Kelley",
"Dean Martin",
"Debra Winger",
"Dee Wallace-Stone",
"Demi Moore",
"Denholm Elliott",
"Dennis Franz",
"Dennis Hopper",
"Dennis Quaid",
"Denzel Washington",
"Diane Keaton",
"Diane Lane",
"Dianne Wiest",
"Dolly Parton",
"Dolph Lundgren",
"Dom DeLuise",
"Don Ameche",
"Donald Pleasence",
"Donald Sutherland",
"Douglas Fairbanks Jr.",
"Drew Barrymore",
"Dudley Moore",
"Dustin Hoffman",
"Ed Harris",
"Eddie Murphy",
"Edward Herrmann",
"Edward James Olmos",
"Elisabeth Shue",
"Elizabeth McGovern",
"Elizabeth Perkins",
"Elizabeth Peña",
"Elizabeth Wilson",
"Emilio Estevez",
"Eric Stoltz",
"Ernest Borgnine",
"Estelle Getty",
"Ethan Hawke",
"F. Murray Abraham",
"Fisher Stevens",
"Forest Whitaker",
"Frank McRae",
"Frank Oz",
"Fred Ward",
"Freddie Jones",
"G.W. Bailey",
"Gabriel Byrne",
"Gaby Hoffmann",
"Gary Busey",
"Gedde Watanabe",
"Geena Davis",
"Gene Hackman",
"Gene Wilder",
"Geoffrey Lewis",
"George Burns",
"George Carlin",
"George Takei",
"George Wendt",
"Geraldine Fitzgerald",
"Glenn Close",
"Goldie Hawn",
"Grace Jones",
"Gregory Hines",
"Griffin Dunne",
"Hal Holbrook",
"Harold Ramis",
"Harrison Ford",
"Harry Dean Stanton",
"Heather Langenkamp",
"Hector Elizondo",
"Helen Mirren",
"Helen Shaver",
"Helen Slater",
"Helena Bonham Carter",
"Henry Thomas",
"Henry Winkler",
"Holly Hunter",
"Howard Hesseman",
"Hume Cronyn",
"Ian Holm",
"Ione Skye",
"Isabella Rossellini",
"Jack Gilford",
"Jack Lemmon",
"Jack Nicholson",
"Jack Palance",
"Jack Warden",
"Jackie Cooper",
"Jackie Gleason",
"James Belushi",
"James Doohan",
"James Earl Jones",
"James Garner",
"James Mason",
"James Spader",
"Jamie Lee Curtis",
"Jane Fonda",
"Janet Leigh",
"Jason Patric",
"Jason Robards",
"Jeff Bridges",
"Jeff Daniels",
"Jeff Goldblum",
"Jennifer Beals",
"Jennifer Grey",
"Jennifer Jason Leigh",
"Jeremy Irons",
"Jerry Orbach",
"Jesse Ventura",
"Jessica Lange",
"Jessica Tandy",
"Jim Henson",
"Jim Varney",
"JoBeth Williams",
"Joan Allen",
"Jodie Foster",
"Joe Don Baker",
"Joe Mantegna",
"Joe Pantoliano",
"Joe Pesci",
"John Amos",
"John Belushi",
"John Candy",
"John Cleese",
"John Cusack",
"John Gielgud",
"John Goodman",
"John Heard",
"John Houseman",
"John Hurt",
"John Lithgow",
"John Lone",
"John Malkovich",
"John Randolph",
"John Rhys-Davies",
"John Travolta",
"John Turturro",
"Joseph Lawrence",
"José Ferrer",
"Judd Nelson",
"Judge Reinhold",
"Julian Sands",
"Julianne Phillips",
"Julie Hagerty",
"Jürgen Prochnow",
"Karen Allen",
"Karen Young",
"Kate Capshaw",
"Katharine Hepburn",
"Katherine Helmond",
"Kathleen Turner",
"Keanu Reeves",
"Keith Gordon",
"Kelly McGillis",
"Kevin Bacon",
"Kevin Costner",
"Kevin Kline",
"Kevin McCarthy",
"Kevin Spacey",
"Kiefer Sutherland",
"Kim Basinger",
"Kim Cattrall",
"Kirk Douglas",
"Kirstie Alley",
"Klaus Maria Brandauer",
"Kurt Russell",
"Kurtwood Smith",
"Lance Guest",
"Lance Henriksen",
"Lea Thompson",
"Lee Van Cleef",
"Leonard Nimoy",
"Leslie Nielsen",
"Liam Neeson",
"Lily Tomlin",
"Linda Kozlowski",
"Liza Minnelli",
"Lloyd Bridges",
"Lonette McKee",
"Lou Diamond Phillips",
"Louis Gossett Jr.",
"Lukas Haas",
"M. Emmet Walsh",
"Macaulay Culkin",
"Madeline Kahn",
"Mako",
"Mandy Patinkin",
"Margaret Colin",
"Maria Conchita Alonso",
"Mark Hamill",
"Mark Harmon",
"Martin Landau",
"Martin Sheen",
"Martin Short",
"Mary Elizabeth Mastrantonio",
"Mary Stuart Masterson",
"Matt Dillon",
"Matthew Broderick",
"Maureen Stapleton",
"Max von Sydow",
"Meg Foster",
"Meg Ryan",
"Mel Brooks",
"Mel Gibson",
"Melanie Griffith",
"Melinda Dillon",
"Meryl Streep",
"Michael Biehn",
"Michael Caine",
"Michael Douglas",
"Michael J. Fox",
"Michael Keaton",
"Michael McKean",
"Michael Winslow",
"Michelle Pfeiffer",
"Mickey Rooney",
"Mickey Rourke",
"Molly Ringwald",
"Morgan Freeman",
"Nancy Allen",
"Ned Beatty",
"Nick Nolte",
"Nicolas Cage",
"Nigel Havers",
"Olivia Newton-John",
"Olympia Dukakis",
"Oprah Winfrey",
"Pam Grier",
"Pat Hingle",
"Pat Morita",
"Patrick Swayze",
"Paul Hogan",
"Paul Newman",
"Paul Reubens",
"Paul Winfield",
"Peter Boyle",
"Peter Coyote",
"Peter Graves",
"Peter O'Toole",
"Peter Weller",
"Prince",
"R. Lee Ermey",
"Rachel Ticotin",
"Rae Dawn Chong",
"Ralph Macchio",
"Raul Julia",
"Ray Liotta",
"Reginald VelJohnson",
"Ricardo Montalban",
"Richard Crenna",
"Richard Dreyfuss",
"Richard Gere",
"Richard Hunt",
"Richard Masur",
"Richard Mulligan",
"Richard Pryor",
"Rick Moranis",
"River Phoenix",
"Rob Lowe",
"Robert Carradine",
"Robert De Niro",
"Robert Downey Jr.",
"Robert Duvall",
"Robert Englund",
"Robert Hays",
"Robert Loggia",
"Robert Redford",
"Robert Wuhl",
"Robin Williams",
"Rodney Dangerfield",
"Roger Moore",
"Roger Wilson",
"Ronny Cox",
"Roy Scheider",
"Rutger Hauer",
"Sally Field",
"Sam Elliott",
"Sam Shepard",
"Sarah Jessica Parker",
"Scatman Crothers",
"Scott Glenn",
"Scott Schwartz",
"Sean Astin",
"Sean Connery",
"Sean Penn",
"Sean Young",
"Sharon Stone",
"Shelley Duvall",
"Shelley Long",
"Shirley MacLaine",
"Sidney Poitier",
"Sigourney Weaver",
"Simon Callow",
"Sissy Spacek",
"Sondra Locke",
"Spiros Focás",
"Stephen Collins",
"Steve Forrest",
"Steve Guttenberg",
"Steve Martin",
"Susan Sarandon",
"Swoosie Kurtz",
"Sylvester Stallone",
"Talia Shire",
"Ted Danson",
"Terence Stamp",
"Teri Garr",
"Teri Hatcher",
"Thomas F. Wilson",
"Tim Curry",
"Tim Robbins",
"Tim Thomerson",
"Timothy Busfield",
"Timothy Dalton",
"Timothy Hutton",
"Tom Berenger",
"Tom Cruise",
"Tom Hanks",
"Tom Selleck",
"Tom Skerritt",
"Tommy Chong",
"Topol",
"Trey Wilson",
"Val Kilmer",
"Vanity",
"Veronica Cartwright",
"Victor Wong",
"Vincent Gardenia",
"Vincent Price",
"Walter Koenig",
"Warren Beatty",
"Warren Oates",
"Whoopi Goldberg",
"Wil Wheaton",
"Wilford Brimley",
"Willem Dafoe",
"William Daniels",
"William Hurt",
"William Shatner",
"Yaphet Kotto"
};
}
This was pretty much it for Facetmap. The other two classes from the javasplitter.web.facetmap package, that I have not talked so far, are Movie and MovieSelectionPropertyProvider.
Movie.java
package javasplitter.web.facetmap;
import com.facetmap.*;
import java.util.Collection;
import java.util.Date;
import java.util.Collections;
import java.io.Serializable;
/*
* Sample use of Facetmap 2.0
* (c) 2007 by Complete Information Architecture and Travis Wilson.
*
* All source code in package "com.facetmap.example" or its subpackages
* (the "Sample Code") uses Facetmap software to enable faceted browsing of
* its data. The data in this program is fictitious and is not intended for
* any use other than the demonstration of Facetmap.
*
* The Sample Code is distributed in the hope that it will be informative,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
/**
* Contains all the data about a movie. This object is also a Resource, so
* it translates business-specific calls like {@link #getActors()} to
* Facetmap-specific calls likegetHeading(4)
.
*
* You could instead create a Resource object which wraps a Movie object,
* which would be just as good. We have taken the inheritance shortcut
* here because it better illustrates the use of the Resource interface.
*
* We have also sacrificed typesafety, for the sake of brevity. Studio and
* genre values could be typed enumerations; facets could be classes. Here
* they are all addressed by simple Strings to keep excess code out of the
* example.
*/
public class Movie implements Resource, Serializable
{
protected int id;
protected String title;
protected String link;
protected Date releaseDate;
protected int domesticBoxOffice;
protected String studio;
protected String genre;
protected Collection actors;
protected Heading[] headings = new Heading[5];
public Movie(FacetSpace facetSpace, int id, String title, Date releaseDate, int domesticBoxOffice, String genre, String studio, Collection actors) throws UnknownReferenceException
{
this.id = id;
this.title = title;
this.releaseDate = releaseDate;
this.domesticBoxOffice = domesticBoxOffice;
this.genre = genre;
this.studio = studio;
this.actors = actors;
// Resource support
Heading genreHeading = facetSpace.getTaxonomyFacet("genre").getHeading(genre);
Heading releaseHeading = facetSpace.getDateFacet("releaseDate").getDateHeading(releaseDate);
Heading boxOfficeHeading = facetSpace.getSpectrumFacet("boxOffice").getSpectrumHeading(domesticBoxOffice);
Heading studioHeading = facetSpace.getTaxonomyFacet("studio").getHeading(studio);
Heading actorsHeading = CompoundHeadingFacet.Util.getCompoundHeadingFromIds(
facetSpace.getCompoundHeadingFacet("actors"), actors
);
// Put headings in array. Since we know the order of headings in the FacetSpace, we could just assign headings[0], headings[1], and so
// on, but the following approach is less presumptuous:
headings[facetSpace.indexOf(genreHeading.getFacet())] = genreHeading;
headings[facetSpace.indexOf(releaseHeading.getFacet())] = releaseHeading;
headings[facetSpace.indexOf(boxOfficeHeading.getFacet())] = boxOfficeHeading;
headings[facetSpace.indexOf(studioHeading.getFacet())] = studioHeading;
headings[facetSpace.indexOf(actorsHeading.getFacet())] = actorsHeading;
}
// Resource support
public String getAttribute(Object key)
{
if (Resource.TITLE.equals(key))
{
return title;
}
else
{
return null;
}
}
public Heading getHeading(int index)
{
return this.headings[index];
}
public int getHeadingCount()
{
return this.headings.length;
}
public int getId()
{
return id;
}
// domain accessors (used by movie application, not by facetmap)
public Collection getActors()
{
return Collections.unmodifiableCollection(actors);
}
public int getDomesticBoxOffice()
{
return domesticBoxOffice;
}
public String getGenre()
{
return genre;
}
public Date getReleaseDate()
{
return releaseDate;
}
public String getStudio()
{
return studio;
}
public String getTitle()
{
return title;
}
}
MovieSelectionPropertyProvider.java
package javasplitter.web.facetmap;
import com.google.inject.Provider;
import java.util.Properties;
/**
* Provides a {@link Properties} object that will be used in the creation
* of the MovieFacetmap.
*
* @author reik.schatz
*/
public class MovieSelectionPropertyProvider implements Provider
{
public Properties get()
{
Properties properties = new Properties();
properties.put("com.facetmap.Selection.resultLimit", String.valueOf(Integer.MAX_VALUE));
properties.put("com.facetmap.Selection.showEmptySelections", "false");
return properties;
}
}
The Movie class is just an entity class that wraps a single movie from the real world. The MovieSelectionPropertyProvider is something Google Guice specific. It functions as a Provider class that returns a Properties instance. This Properties instance is given to the constructor of the MovieFacetmap (see above). Two properties are being used within the application. com.facetmap.Selection.resultLimit defines how many items you want to see in your resultset at a time. As I want to see all movies in the result, I am using a very high number for this property. com.facetmap.Selection.showEmptySelections is set to false. If you set it to true, the user would be able to choose forward selections that do not contain any items (movies).
This concludes the second part. If you want to create your own facet search using Facetmap Light, you have to create your own Facetmap, ResourceSpace, FacetSpace and a list of Resources (movies or whatever). In the next part I will write about Google Guice and Wicket.