%@ page isThreadSafe="false" %><%@ page import="java.awt.*" %><%@ page import="javax.swing.*" %><%@ page import="java.awt.image.*" %><%@ page import="com.mesart.site.logic.artworks.*" %><%@ include file="globalPaths.jsp" %><%@ include file="globalDefinitions.jsp" %><%
String artist = request.getParameter("artist");
String sersID = request.getParameter("serUs");
String sersName = "";
if (artist == null || !isInteger(artist) || (sersID != null && !isInteger(sersID)))
{
session.setAttribute("404.errorDescription", "Incorrect parameter value");
response.sendError(response.SC_NOT_FOUND);
return;
}
%><%
Cookie[] cookies;
cookies = request.getCookies();
String cookieArtist = "";
for (int icook = 0; cookies!=null && icook < cookies.length; icook++)
{
Cookie cookie = cookies[icook];
if ((cookie.getName()).equals("galleryArtistID"))
{
cookieArtist = cookie.getValue();
}
}
String remoteIP = "UndefinedIP";
if (request.getRemoteAddr() != null)
{
remoteIP = request.getRemoteAddr();
}
%><%
// Variables to access database
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
String query = null;
%><%
// Variables to keep Artist's data
String e1ImageUrl = "ima/e1.gif";
String artistFirstName = null;
String artistName = null;
String company = "";
String snapshot = null;
String pack = null;
String website = null;
String timeStamp = "0";
boolean needCaching = true;
String keywords = "";
String calendarOrder = "";
%><%
// Determine artist's package and redirect to corresponding page for packages 0,2,3
// or to error page in case of inactive account,
// otherwise load Artist's data.
try
{
connection = openConnection();
statement = connection.createStatement();
query = "SELECT A.package, A.activeflag, A.portfolio, A.showStudio, A.ipLastLoggedFrom,"
+ " A.id, A.firstName, A.lastName, A.company, A.snapshot, A.website, "
+ " A.timestamp, A.keywords, A.calendarReverse, W.id FROM galleryArtist A LEFT JOIN galleryArtwork W "
+ " ON A.id=W.artist WHERE (W.activeflag='Y' OR W.activeflag='L' OR "
+ " W.activeflag IS NULL) AND A.activeflag!='F' AND A.id="
+ quoteString(artist);
resultSet = statement.executeQuery(query);
if (resultSet.next())
{
String af = resultSet.getString("A.activeflag");
if (!"Y".equals(af))
{
needCaching = false;
}
if (!artist.equals((String)session.getValue("loggedartist"))
&& !"admin".equals((String)session.getValue("admin.logged"))
&& !remoteIP.equals(resultSet.getString("ipLastLoggedFrom"))
&& !artist.equals(cookieArtist))
{
if ("N".equals(af))
{
throw new UserInputException("The pages you are trying to view belong"
+ " to an account that is not currently activated."
+ " If this is a new account, the artist needs to "
+ "complete the setup process before the artwork will be"
+ " available on the Internet");
}
if ("P".equals(af))
{
throw new UserInputException("The pages you are trying to view belong"
+ " to an account that has been closed. Please update "
+ "your bookmark");
}
}
pack = resultSet.getString("A.package");
if ("0".equals(pack))
{
String wid = resultSet.getString("W.id");
if (wid != null)
{
sendRedirect(globalSite + "/artwork.jsp?artwork="
+ URLEncoder.encode(wid));
return;
}
else
throw new UserInputException("This Lobby artist has no artworks in their portfolio.");
}
if ("2".equals(pack) || "4".equals(pack))
{
String personalLink = resultSet.getString("A.portfolio");
sendRedirect(personalLink);
return;
}
if ("3".equals(pack))
{
sendRedirect(globalSite + "/artworksps.jsp?artist="
+ URLEncoder.encode(artist) + (sersID != null ? "&series="
+ URLEncoder.encode(sersID) : ""));
return;
}
if (! ("1".equals(pack) || "5".equals(pack)))
{
throw new Exception("Unknown package");
}
if (resultSet.getString("A.snapshot") == null ||
"".equals(resultSet.getString("A.snapshot")))
{
snapshot = e1ImageUrl;
}
else
{
snapshot = resultSet.getString("A.snapshot");
}
website = resultSet.getString("A.website");
company = resultSet.getString("A.company");
if (company == null || "none".equals(company))
company = "";
String fn = resultSet.getString("A.firstName");
String ln = resultSet.getString("A.lastName");
if ("".equals(fn.trim()))
{
artistName = toUpperCaseFirstLetter(ln);
artistFirstName = artistName;
}
else
{
artistName = toUpperCaseFirstLetter(fn) + " "
+ toUpperCaseFirstLetter(ln);
artistFirstName = toUpperCaseFirstLetter(fn);
}
keywords = resultSet.getString("A.keywords");
if (keywords == null)
keywords="";
try
{
if (resultSet.getTimestamp("A.timestamp") != null)
{
timeStamp = resultSet.getString("A.timestamp");
timeStamp = substituteTokens(timeStamp, ":", "");
timeStamp = substituteTokens(timeStamp, "-", "");
timeStamp = substituteTokens(timeStamp, " ", "");
}
else
{
timeStamp = "00000000000000";
}
}
catch (Exception e)
{
timeStamp = "00000000000000";
}
if("0".equals(resultSet.getString("calendarReverse")))
calendarOrder = "DESC";
}
else
{
throw new UserInputException("Artist not found");
}
resultSet.close();
%><%@ include file="cacheBegin.jsp" %><%
long id = 0;
String name = "";
String address = "";
String comment = "";
String zip = "";
String city = "";
String district = "";
String startDate = "";
String endDate = "";
String sd = "";
String ed = "";
String state = "";
String country = "";
String receptionDate = "";
// Get Open Studios and Art Fairs
// and store their info into object's vectors for later usage.
Vector opsRecords = new Vector();
Vector afRecords = new Vector();
query = "SELECT OPS.*, OPSA.address, OPSA.zip ,OPSA.comments "
+ "FROM galleryOpenStudio OPS LEFT JOIN galleryOpenStudioArtist OPA "
+ "ON OPA.openStudioId=OPS.id LEFT JOIN galleryOpenStudioAddress OPSA "
+ "ON OPSA.artist=OPA.artist AND OPSA.openStudioId=OPS.id "
+ "WHERE OPA.artist=" + quoteString(artist)
+ " GROUP BY OPS.id ORDER BY OPS.startdate " + calendarOrder;
resultSet = statement.executeQuery(query);
while (resultSet.next())
{
id = resultSet.getLong("OPS.id");
name = resultSet.getString("OPS.name");
if (resultSet.getString("OPSA.address") == null
|| "".equals(resultSet.getString("OPSA.address")))
{
address = resultSet.getString("OPS.placement");
}
else
{
address = resultSet.getString("OPSA.address");
}
if (resultSet.getString("OPSA.comments") == null
|| "".equals(resultSet.getString("OPSA.comments")))
{
comment = resultSet.getString("OPS.comments");
}
else
{
comment = resultSet.getString("OPSA.comments");
}
if (resultSet.getString("OPSA.zip") == null
|| "".equals(resultSet.getString("OPSA.zip")))
{
zip = resultSet.getString("OPS.zip");
}
else
{
zip = resultSet.getString("OPSA.zip");
}
city = resultSet.getString("OPS.city");
district = resultSet.getString("OPS.district");
if (resultSet.getString("OPS.startdate") == null)
{
startDate = "01/01/1970";
}
else
{
sd = resultSet.getString("OPS.startdate");
startDate = sd.substring(5,7) + "/" + sd.substring(8,10) + "/"
+ sd.substring(0,4);
}
if (resultSet.getString("OPS.enddate") == null)
{
endDate = "01/01/1970";
}
else
{
ed = resultSet.getString("OPS.enddate");
endDate = ed.substring(5,7) + "/" + ed.substring(8,10) + "/"
+ ed.substring(0,4);
}
state = resultSet.getString("OPS.state");
country = resultSet.getString("OPS.country");
if ("0".equals(resultSet.getString("OPS.artFair_openStudio")))
{
opsRecords.addElement(new OPSAFRecord(id, name, startDate,
endDate, address, comment, district, city, state, zip,
country));
}
else if ("1".equals(resultSet.getString("OPS.artFair_openStudio")))
{
afRecords.addElement(new OPSAFRecord(id, name, startDate, endDate,
address, comment, district, city, state, zip, country));
}
}
resultSet.close();
// Get Exhibitions and Workshops
// and store their info into object's vectors for later usage.
Vector exRecords = new Vector();
Vector woRecords = new Vector();
query = "SELECT GAE.* FROM galleryArtistExhibition GAE "
+ " LEFT JOIN galleryArtist A ON A.id=GAE.artist "
+ " WHERE GAE.artist=" + quoteString(artist)
+ " AND GAE.isArchive = 0"
+ " ORDER BY GAE.startdate " + calendarOrder;
resultSet = statement.executeQuery(query);
while (resultSet.next())
{
id = resultSet.getLong("GAE.id");
name = resultSet.getString("GAE.name");
address = resultSet.getString("GAE.address");
city = resultSet.getString("GAE.city");
if (resultSet.getString("GAE.startdate") == null)
{
startDate = "01/01/1970";
}
else
{
sd = resultSet.getString("GAE.startdate");
startDate = sd.substring(5,7) + "/" + sd.substring(8,10)
+ "/" + sd.substring(0,4);
}
if (resultSet.getString("GAE.enddate") == null)
{
endDate = "01/01/1970";
}
else
{
ed = resultSet.getString("GAE.enddate");
endDate = ed.substring(5,7) + "/" + ed.substring(8,10)
+ "/" + ed.substring(0,4);
}
if (resultSet.getString("GAE.receptiondate")==null)
{
receptionDate = "01/01/1970";
}
else
{
sd = resultSet.getString("GAE.receptiondate");
receptionDate = sd.substring(5,7) + "/" + sd.substring(8,10)
+ "/" + sd.substring(0,4);
}
state = resultSet.getString("GAE.state");
country = resultSet.getString("GAE.country");
zip = resultSet.getString("GAE.zip");
comment = resultSet.getString("GAE.comments");
district = resultSet.getString("GAE.addressComments");
if ("1".equals(resultSet.getString("GAE.flag")))
{
exRecords.addElement(new ExhibitionWorkshopRecord(id, name,
startDate, endDate, address, comment, district, city,
state, zip, country, receptionDate));
}
else if ("0".equals(resultSet.getString("GAE.flag")))
{
woRecords.addElement(new ExhibitionWorkshopRecord(id, name,
startDate, endDate, address, comment, district, city,
state, zip, country, receptionDate));
}
}
resultSet.close();
%><%
// Define basic variables for storing series' and artworks' information
boolean pr = false;
boolean next = false;
boolean previous = false;
String nextSeriesNumber = "0";
String previousSeriesNumber = "0";
Vector sers = new Vector();
Vector artworkIDs = new Vector();
Vector artworkNames = new Vector();
Vector artworkDates = new Vector();
Vector artworkSnapshots = new Vector();
Vector availables = new Vector();
Vector prices = new Vector();
Vector printPrices = new Vector();
Vector solds = new Vector();
Vector imageWidths = new Vector();
Vector imageHeights = new Vector();
Vector types = new Vector();
Vector techniques = new Vector();
Vector categories = new Vector();
Vector descriptions = new Vector();
Vector themes = new Vector();
Vector styles = new Vector();
Vector colors = new Vector();
%><%
// Determine art types and categories
// which happen for the current artist
String wtype = null;
String wcategory = null;
Vector wtypes = new Vector();
Vector fineartCategories = new Vector();
Vector craftCategories = new Vector();
Vector commercialartCategories = new Vector();
query = "SELECT DISTINCT type, category FROM galleryArtwork "
+ " WHERE (activeflag='Y' OR activeflag='L') AND artist="
+ quoteString(artist);
resultSet = statement.executeQuery(query);
while (resultSet.next())
{
wtype=resultSet.getString("type");
wcategory=resultSet.getString("category");
wtypes.addElement(wtype);
if (wtype.equals("fineart"))
{
fineartCategories.addElement(wcategory);
}
if (wtype.equals("craft"))
{
craftCategories.addElement(wcategory);
}
if (wtype.equals("commercialart"))
{
commercialartCategories.addElement(wcategory);
}
}
resultSet.close();
%><%
// Get Series Info
boolean seriesFound = false;
String curSerId = "";
query = "SELECT distinct S.name, S.id FROM gallerySeries S, galleryArtwork W "
+ " WHERE (W.activeflag='Y' OR W.activeflag='L')"
+ " AND S.id = W.series AND W.artist=" + quoteString(artist)
+ " ORDER BY S.sortid";
resultSet = statement.executeQuery(query);
while (resultSet.next())
{
curSerId = resultSet.getString("S.id");
if (sersID == null)
{
sersID = curSerId;
setParameter("serUs", sersID);
}
if (sersID.equals(curSerId))
{
seriesFound = true;
//sersName = resultSet.getString("S.name");
sersName = String.valueOf(sers.size() + 1);
if (sers.size() > 0)
{
previous = true;
previousSeriesNumber = (String)sers.elementAt(sers.size()
- 1);
}
}
else if (sers.size() > 0 && sersID.equals(sers.elementAt(sers.size()
- 1)))
{
next = true;
nextSeriesNumber = curSerId;
}
sers.addElement(curSerId);
}
resultSet.close();
if (!seriesFound && sersID != null)
{
throw new UserInputException("Series not found");
}
%><%
// Get Artwork Info
if (0 < sers.size())
{
URL iiurl = null;
float iiwidth = 0;
float iiheight = 0;
String preferredWidth = "";
String artworkSnapshot = "";
String tempdate = "";
query = "SELECT W.id, W.name, W.type, W.smallshot, W.snapshot,"
+ " W.technique, W.description, W.theme, W.style, W.color,"
+ " W.widthImage, W.heightImage, W.category, W.available, W.price,"
+ " W.printPrice, W.sold, W.modifiedDate, S.httppath"
+ " FROM galleryArtwork W, galleryServer S"
+ " WHERE S.id=W.ftpserver AND"
+ " W.series=" + quoteString(sersID)
+ " AND W.forSale=1 AND (W.activeflag='Y' OR"
+ " W.activeflag='L') ORDER BY W.sortid";
resultSet = statement.executeQuery(query);
while (resultSet.next())
{
artworkSnapshot = null;
artworkIDs.addElement(resultSet.getString("W.id"));
artworkNames.addElement(resultSet.getString("W.name"));
types.addElement(getArtTypeName(resultSet.getString("W.type")));
solds.addElement(resultSet.getString("W.sold"));
techniques.addElement(toUpperCaseFirstLetter(resultSet.getString("W.technique")));
descriptions.addElement(resultSet.getString("W.description"));
themes.addElement(toUpperCaseFirstLetter(resultSet.getString("W.theme")));
styles.addElement(toUpperCaseFirstLetter(resultSet.getString("W.style")));
colors.addElement(toUpperCaseFirstLetter(resultSet.getString("W.color")));
artworkDates.addElement(getTimestampDigits(resultSet, "W.modifiedDate"));
categories.addElement(getArtCategoryName(resultSet.getString("W.category")));
availables.addElement(resultSet.getString("W.available"));
prices.addElement(resultSet.getString("W.price"));
printPrices.addElement(resultSet.getString("W.printPrice"));
if (resultSet.getString("W.snapshot") == null ||
"".equals(resultSet.getString("W.snapshot")))
{
artworkSnapshot = e1ImageUrl;
}
else
{
artworkSnapshot = resultSet.getString("S.httppath")
+ resultSet.getString("W.snapshot");
}
artworkSnapshots.addElement(artworkSnapshot);
imageWidths.addElement(resultSet.getString("W.widthImage"));
imageHeights.addElement(resultSet.getString("W.heightImage"));
}
resultSet.close();
}
%><%
// Display artist's Open Studios
String temp = null;
boolean ind4 = false;
query = "SELECT DISTINCT OS.name FROM galleryOpenStudio OS LEFT JOIN"
+ " galleryOpenStudioArtist OSA ON OSA.openStudioId = OS.id WHERE"
+ " OSA.artist = " + quoteString(artist) + " GROUP BY OS.name";
resultSet = statement.executeQuery(query);
while (resultSet.next())
{
String opsName=resultSet.getString("OS.name");
if ("Silicon Valley OPS".equals(opsName))
{
temp = ""
+ "Silicon Valley Open Studios
";
}
if ("East Bay Open Studios (Pro Arts)".equals(opsName))
{
temp = "Pro Arts East Bay"
+ "
Open Studios
";
}
if ("San Francisco Open Studios".equals(opsName))
{
temp = ""
+ "San Francisco Open Studios
";
}
if (opsName.indexOf("Art Of Living")!=-1 && !ind4)
{
temp = ""
+ "The Art Of Living Black
";
ind4 = true;
}
}
resultSet.close();
%><%
keywords = replaceAll(keywords, sersName + ",", ""); // Remove artwork name from keyword string, so that it is not repeated.
keywords = replaceAll(keywords, sersName, "");
String allTypes = arrayToString(types.toArray(), ", ", true);
String allTechniques = arrayToString(techniques.toArray(), "/", true);
String allCategories = arrayToString(categories.toArray(), " ", true);
String uniqueCategories = arrayToString(categories.toArray(), "|", true);
String allThemes = arrayToString(themes.toArray(), ", ", true);
allThemes = allThemes.replace("/", " ");
String allStyles = arrayToString(styles.toArray(), " ", true);
String allColors = arrayToString(colors.toArray(), "/", true);
String pageSeries = toUpperCaseFirstLetter(sersName);
String pageTitle = artistName + "'s " + (uniqueCategories.indexOf("|") == -1 ? allCategories : allTypes);
String pageKeywords =
allThemes + " Theme, " + allStyles + " Style, " + allCategories + ", "
+ allColors + " Color" + (keywords.length() > 0 ? ", " + keywords : "") + ", " + allTypes;
String pageDescription = artistName + "'s" + " "
+ allThemes + " " + allStyles + " Style" + " " + allTypes + " " + allCategories + " Series. "
+ allColors + " Color" + (keywords.length() > 0 ? " (" + keywords + ")" : "") + ".";
pageDescription = replaceAll(pageDescription, "<", "[");
pageDescription = replaceAll(pageDescription, ">", "]");
pageDescription = replaceAll(pageDescription, "\r\n", " ");
pageDescription = replaceAll(pageDescription, "\n", " ");
%><%
if (needCaching)
{
%><%@ include file="cacheLaunch.jsp" %><%
}
%>
<%= pageTitle %>
<%@ include file="artworksTop.txt" %>
 |
<%
boolean artistInfo = false;
if (wtypes.contains("fineart"))
{
artistInfo = true;
%>
| |
|
| FINE ART: |

<%
String FAtext = "";
if (fineartCategories.contains("painting"))
FAtext += ", Painting";
if (fineartCategories.contains("graphics"))
FAtext += ", Graphics";
if (fineartCategories.contains("printmaking"))
FAtext += ", Printmaking";
if (fineartCategories.contains("photography"))
FAtext += ", Photography";
if (fineartCategories.contains("sculpture"))
FAtext += ", Sculpture";
if (fineartCategories.contains("mixedmedia"))
FAtext += ", Mixed Media";
if (fineartCategories.contains("newmedia"))
FAtext += ", New Media";
if (fineartCategories.contains("installationart"))
FAtext += ", Installation Art";
if (fineartCategories.contains("artbooks"))
FAtext += ", Art Books";
if (FAtext.length() > 7)
FAtext = FAtext.substring(7);
out.print(FAtext);
%>
|
|
<%
}
if (wtypes.contains("craft"))
{
%>
| |
|
| CRAFT: |

<%
String CRtext = "";
if (craftCategories.contains("ceramics"))
CRtext += ", Ceramics";
if (craftCategories.contains("glass"))
CRtext += ", Glass";
if (craftCategories.contains("jewelry"))
CRtext += ", Jewelry";
if (craftCategories.contains("furniture"))
CRtext += ", Furniture";
if (craftCategories.contains("metalart"))
CRtext += ", Fiber Art";
if (craftCategories.contains("wood"))
CRtext += ", Wood";
if (craftCategories.contains("textile"))
CRtext += ", Fiber Art";
if (CRtext.length() > 7)
CRtext = CRtext.substring(7);
out.print(CRtext);
%>
|
|
<%
}
if (wtypes.contains("commercialart"))
{
%>
| |
|
|
GRAPHIC DESIGN: |

<%
String CAtext = "";
if (commercialartCategories.contains("booksart"))
CAtext += ", Book Art";
if (commercialartCategories.contains("illustration"))
CAtext += ", Illustration";
if (commercialartCategories.contains("calligraphy"))
CAtext += ", Calligraphy";
if (commercialartCategories.contains("printdesign"))
CAtext += ", Print Design";
if (commercialartCategories.contains("typography"))
CAtext += ", Typography";
if (commercialartCategories.contains("webdesign"))
CAtext += ", Web Design";
if (CAtext.length() > 7)
CAtext = CAtext.substring(7);
out.print(CAtext);
%>
|
|
<%
}
%>
 |
 |
 |
 |
 |
 |
 |
 |
| |
?<%=timeStamp%> border=0 alt="<%=artistName%>" width="139">
 |
<%=artistName%>
<%
if (!"".equals(company.trim()))
{
%>

<%=company%>
<%
}
%> |
| |
|
|
 |
Pages  |
 |
 |
 |
 |
 |
<%
// Top series' navigator
String currentSeries;
String link = "";
for (int i = 0; i < sers.size(); i++)
{
currentSeries = (String)sers.elementAt(i);
link = "artworks.jsp?serUs=" + currentSeries + "&artist=" + artist;
%>
| | |
><%=i + 1%> |
<%
}
%>
| |
<%
if (sers.size() == 0)
{
%>
|
<%
}
if (next)
{
link = "artworks.jsp?serUs=" + nextSeriesNumber + "&artist=" + artist;
%>
 |
<%
}
%>
|
<%
if (next)
{
%>
next |
<%
}
%>
 |
 |
 |
  |
|
|
|
 |
| |
|