/* * [Manufacturer.java] * * Summary: enum constants for motherboard Manufacturers. * * Copyright: (c) 2011-2017 Roedy Green, Canadian Mind Products, http://mindprod.com * * Licence: This software may be copied and used freely for any purpose but military. * http://mindprod.com/contact/nonmil.html * * Requires: JDK 1.7+ * * Created with: JetBrains IntelliJ IDEA IDE http://www.jetbrains.com/idea/ * * Version History: * 1.0 2011-02-20 initial version. */ package com.mindprod.mother; /** * enum constants for motherboard Manufacturers. * * @author Roedy Green, Canadian Mind Products * @version 1.0 2011-02-20 initial version. * @since 2011-02-20 */ public enum Manufacturer { ASUS( "Asus" ) { /** * @param manufacturerPartNo manufacturer's part number. .g. AMD_AM2Plus/M2N68_PLUS * @return */ String learnURL( String manufacturerPartNo ) { return "http://www.asus.com/Motherboards/" + manufacturerPartNo + "/#specifications"; } String miningURL( String manufacturerPartNo ) { return "http://www.asus.com/Motherboards/" + manufacturerPartNo + "/#specifications"; } }, BIOSTAR( "BioStar" ) { String learnURL( String manufacturerPartNo ) { if ( manufacturerPartNo.length() <= 3 ) { return "http://www.biostar-usa.com/app/en-us/mb/content.php?S_ID=" + manufacturerPartNo; } else { return "http://www.biostar-usa.com/mbdetails.asp?model=" + manufacturerPartNo; } } String miningURL( String manufacturerPartNo ) { return learnURL( manufacturerPartNo ); } }, GIGABYTE( "Gigabyte" ) { String learnURL( String manufacturerPartNo ) { return "http://www.gigabyte.com/products/product-page.aspx?pid=" + manufacturerPartNo + "#sp"; } String miningURL( String manufacturerPartNo ) { return "http://www.gigabyte.com/products/product-page_ajax.aspx?&t=sp&pid=" + manufacturerPartNo + "&dlt=&cg=2&ck=2"; } }, ECS( "ECS Elite Group" ) { /** * Get URL where can learn more about this motherboard. * @param manufacturerPartNo manufacturer's part number of from 99-99 menuID-detailId * @return URL */ String learnURL( String manufacturerPartNo ) { return miningURL( manufacturerPartNo ); } /** * Get URL where can screen scrape specse about this motherboard. * @param manufacturerPartNo manufacturer's part number of from 99-99 menuID-detailId * @return URL */ String miningURL( String manufacturerPartNo ) { final int place = manufacturerPartNo.indexOf( '-' ); if ( place < 0 ) { throw new IllegalArgumentException( "bad ECS manufacturer part no " + manufacturerPartNo ); } final String menuID = manufacturerPartNo.substring( 0, place ); final String detailID = manufacturerPartNo.substring( place + 1 ); return "http://www.ecsusa.com/ECSWebSite/Product/Product_Detail.aspx?DetailID=" + detailID + "&CategoryID=1&DetailName=Feature&MenuID=" + menuID + "&LanID=8;"; } }, MSI() { String learnURL( String manufacturerPartNo ) { return null; } String miningURL( String manufacturerPartNo ) { return null; } }, TYAN( "Tyan" ) { String learnURL( String manufacturerPartNo ) { return null; } String miningURL( String manufacturerPartNo ) { return null; } }; /** * cannot use String... here, only in parm list alterate input names for the alias */ private final String[] aliases; /** * constructor for an enum constant * * @param aliases other names for string input */ Manufacturer( String... aliases ) { this.aliases = aliases; } /** * convert alias string to equivalent canonical enum constant, like valueOf but accepts aliases too, and does not * care about case. * * @param s alias as string * * @return equivalent AppCat enum constant */ public static Manufacturer valueOfAlias( String s ) { try { return valueOf( s.toUpperCase() ); } catch ( IllegalArgumentException e ) { // usual method failed, try looking up alias // This seems long winded, why no HashSet? // Because Java won't let me access a static common // lookup in the enum constructors. for ( Manufacturer candidateEnum : Manufacturer.values() ) { for ( String candidateString : candidateEnum.aliases ) { if ( candidateString.equalsIgnoreCase( s ) ) { return candidateEnum; } } } // fell out the bottom of search over all enums and aliases // give up throw new IllegalArgumentException( "unknown Manufacturer: " + s ); } } /** * ordinary toString * * @return upper and lower case name for the manufacturer. */ public String toString() { if ( aliases.length > 0 ) { return aliases[ 0 ]; } else { return name(); } } /** * computer URL of where best for end user to learn more data about this motherboard * * @param manufacturerPartNo manufacturer's part number; * * @return URL on manufacturer's site where end user can best learn more about this motherboard. */ abstract String learnURL( String manufacturerPartNo ); /** * computer URL of where best to mine data about his motherboard * * @param manufacturerPartNo manufacturer's part number; * * @return URL on manufacturer's site where best to screen scrape data about this motherboard. */ abstract String miningURL( String manufacturerPartNo ); }