Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Almost have Step 1 working but just need to modify to add key of artID and value

ID: 3827295 • Letter: A

Question

Almost have Step 1 working but just need to modify to add key of artID and value of artistID in TreeMap.

I. Step 1: Map is a very convenient structure for locating data. In this step, you are going to build a
map by reading "exam4Arts.txt" that use "artID" as the key and "artistID" as the value.

A. What to do:
1. Modify ArtMap.java to do the following:
   - "map" of TreeMap that uses "artID" as key and "artistID" as its value.
  
2. Modify “Exam4Step1.java” to test ArtMap that you defined above by doing the following:
   - Ask for an artID
   - Print the corrosponding artistID.

3. The sample output follows:

Please enter an Art ID(0 to quit) ==> 1000
Artist not found!
Please enter an Art ID(0 to quit) ==> 1001
Artist = 9
Please enter an Art ID(0 to quit) ==> 1042
Artist = 2
Please enter an Art ID(0 to quit) ==> 0
Bye!

Now, add methods and required code to do the following. Keep the output from Step1 intact.

II. Step 2: In this step, you are going to construct a map that uses artistID as the key and its corresponding ArtistNode as the value
    so that you may directly locate a particular ArtistNode based upon the entered artistID

A. What to do:
1. Rename your “MyArtistNodes.java” as “MyArtists.java” with the following modification:
   1. Add a TreeMap named "map" that takes artistID as the key and ArtistNode as its value.
   (Notes : In this constructor, you simply add a statement to construct the map when you construct the ArrayList of Artist)
   2. Use "map" to locate a particular ArtistNode.

2. Write “Exam4Step2.java” to test "MyArtist.java" that you defined above by doing the following:

A. What to do:
   1. Pass "exam4artists,txt" when making an instance of MyArtists.
   2. Ask for an artistID
   3. As long as the inputted artistID > 0, do the following:
       i) Print the corresponding ArtistNode
       ii) Ask for another artistID

a. The sample output follows:
Please enter an Artist ID(0 to quit) ==> 3
Artist = 3, Name = Carpenter, Total Artworks = 0, Total Value = 0.0
Please enter an Artist ID(0 to quit) ==> 5
Artist = 5, Name = Edwards, Total Artworks = 0, Total Value = 0.0
Please enter an Artist ID(0 to quit) ==> 12
Artist 12 not found!
Please enter an Artist ID(0 to quit) ==> 0
Bye!

Required Files:

exam4Arts.txt:

1038   Spring Flowers   1   800
1050   Cattle Ranch   1   10000
1103   Trail End   1   8000
1042   Coffee on the Trail   2   7544
1013   Superstitions   3   78000
1021   Bead Wall   3   14000
1034   Beaver Pole Jumble   3   28000
1063   Asleep in the Garden   3   110000
1070   Beginnings   4   27500
1036   Blackhawk   5   25500
1017   Brittlecone   6   1300
1053   Blue Eyed Indian   6   40000
1056   Cavalry Is Coming   6   1900
1075   Western Boots and Spurs   6   6000
1077   Bull Riding   6   5200
1049   Buttercup with Red Lip   7   400
1018   Mountain Scene   8   2500
1055   Starlit Evening   9   9500
1096   Ceremonial Sticks   10   15000
1037   Floating World   7   2350
1109   Friends   8   16000
1084   Crossing the Platt River   9   2200
1072   Funnel   10   4500
1032   Rising Sun   7   2000
1060   Story Sticks   8   650
1044   Mexican Fiesta   9   14000
1047   Medicine Man   10   2500
1024   Spirit and Nature   7   592
1067   Owl in Flight   8   7000
1001   Red Rock Mountain   9   18000
1028   Tired Cowboy   10   4700
1054   Snake Charmer   7   4500
1068   Moonlight   8   9750
1069   Renaissance   9   5500
1113   Shadow House   10   5500
1114   Storytelling at the Campfire   7   18000
1064   Spirit Columns   8   7000
1002   Offerings    9   10000
1089   Life Lessons   10   4125
1091   Stone Palette   7   11500
1074   Storm on the Rise   8   8000
1098   Sweet Project   9   592
1048   Comfy Chair   10   800
1101   The Red Door   2   10000
1080   The Dust Behind   3   18000
1058   The Gathering   3   250
1019   The White Heart   3   9300
1095   The Spirit   3   20000
1079   Carrying the Mail   4   8000
1093   Antelopes    5   12500
1110   Three Sisters   6   6500
1085   Traces   6   20000
1004   Seeking Shelter   6   52000
1016   Untitled   6   6000
1026   Untitled (couple)   7   4000
1057   Untitled   8   4500
1086   Untitled (desert landscape)   2   18000
1025   Profile of a Woman   3   625
1022   The Cowboy   3   4200
1104   Untitled    3   1800
1010   Untitled (land with adobe)   3   800
1111   Untitled (man and crucifix)   4   3200
1020   Untitled (Man holding coat)   5   3000
1012   Man on Horseback   6   8000
1097   Untitled (Sea)   6   2800
1066   Untitled (still life)   6   19500
1033   Untitled (Woman abstract)   6   2500
1061   Untitled Mural   7   3520
1071   Ride the Rapids   8   300

exam4Artists.txt:

1   Acconci
2   Budd
3   Carpenter
4   Dill
5   Edwards
6   Fleming
7   Garber
8   Higgins
9   Ibe
10   Kollasch

ArtMap.java:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Map;
import java.util.TreeMap;


public class ArtMap {
// map to store data
Map artistMap;

public ArtMap(String fileName) throws IOException {
// initialize the map
artistMap = new TreeMap<>();
  
// read data using reader
BufferedReader reader = new BufferedReader(new FileReader(fileName));
String line;
  
// while file has lines
while((line = reader.readLine()) != null) {
// split token using one or more spaces
String tokens[] = line.split(" ");
artistMap.put(Integer.parseInt(tokens[0]), Integer.parseInt(tokens[2]));
}
  
// close reader
reader.close();
}
  
/*
* Method which returns name corresponding to id
*/
Integer getName(int id){
if(artistMap.containsKey(id))
return artistMap.get(id);
  
return null;
}
}

Exam4Step1.java:

import java.io.IOException;
import java.util.Scanner;

public class Exam4Step1 {

public static void main(String[] args) throws IOException {
ArtMap artistMap = new ArtMap("C:/Users/patel/Desktop/JavaFiles/exam4arts.txt");
Scanner scanner = new Scanner(System.in);
int id;
  
// ask the name for the first time
System.out.print("Please enter an Art ID(0 to quit) ==> ");
id = scanner.nextInt();
  
// keep looping till user enters a id of 0 or less
while(id > 0) {
// get the ID from map
Integer ID = artistMap.getName(id);
if(ID == null) {
   System.out.println("Artist not found!");
//name = "Artist not found!";
}
// print the name
System.out.println("Artist = " + ID);
  
  
// ask again for next input id
System.out.print("Please enter an Art ID(0 to quit) ==> ");
id = scanner.nextInt();
}
/*while (id <= 0) {
   System.out.println("Bye!");
}*/
  
scanner.close();
}

}

MyArtistNodes.java:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.ListIterator;
import java.util.Scanner;


public class MyArtistNodes implements java.lang.Comparable{

   public ArrayList myArtistNodes = new ArrayList();
   public ArrayList myArtNodes = new ArrayList();
   ListIterator lr = myArtistNodes.listIterator();
  
   public MyArtistNodes(String filename) {
   Scanner input;
     
     
   try {
   input = new Scanner(new File(filename));
   myArtistNodes = new ArrayList();
   while(input != null && input.hasNext()) {
  
       String line = input.nextLine();
       String[] tokens = line.split(" ");
   // System.out.println(tokens.length+" "+tokens[1]+" -- "+Integer.parseInt(tokens[0].trim()));
   ArtistNode newA = new ArtistNode(tokens[1],Integer.parseInt(tokens[0].trim()));
   myArtistNodes.add(newA);
   System.out.println(newA);
     
   while (lr.hasPrevious()){
       //System.out.println("Aashiv");
       System.out.println(lr.previous());
   }
   }
   input.close();
     
   } catch (NumberFormatException | FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   }
   }
  
   public void print(String heading, String outFile) {
  
   //write to file
   BufferedWriter writer;
   try {
   writer = new BufferedWriter(new FileWriter(outFile));
   writer.write(heading + " ");
   writer.write(System.getProperty("line.separator"));
     
   for(Artist a : myArtistNodes) {
       //writer.write(newA);
   writer.write(a.toString()+" ");
     
   writer.write(System.getProperty("line.separator"));
   }
   writer.flush();
   writer.close();
   } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   }
  
  
   }

   public static int compareTo(ArrayList o1, ArrayList o2) {
   o2.get(0);
       o1.get(0);
       int compareValue = (Artist.getArtistID() - Artist.getArtistID());
   return compareValue;
   }
  
   /**
   * Finds the artist with id and returns the array index
   */
   public static int getArtist(ArrayList[] artistArtArray, int artistId) {
   for (int i = 0; i < artistArtArray.length; i++) {
   artistArtArray[i].get(0);
           if (Artist.getArtistID() == artistId)
   return i;
   }

   return -1;
   }
   /*
   // write to console
   public void printList() {
   for(Artist a : myArtistNodes) {
   System.out.println(a.toString());
   }
   }
     
   // write to console
   public void printList() {
   for(Art a : myArtNodes) {
   System.out.println(a.toString());
   }
   }
     
   public void append()
   {
         
   }
   /*public int indexOfArtistID(int artistID)
   {
       int index;
       return index;
         
   }*/

   @Override
   public int compareTo(Artist o) {
       // TODO Auto-generated method stub
       return 0;
   }
}

Artist.java:

public class Artist implements java.lang.Comparable<Artist> {
// Instance variables
private int artistID; // id of artist
private String artistName; // name of artist
private Art art;

/**
* Constructor
*
* @param name
* @param number
*/
Artist(String name, int number) {
this.artistID = number;
this.artistName = name;
}

/**
* Constructor
*
* @param artistID
* @param artistName
* @param art
*/
public Artist(int artistID, String artistName, Art art) {
this.artistID = artistID;
this.artistName = artistName;
this.art = art;
}

/**
* return the artistName
*
* @return
*/
public String getArtistName() {
return artistName;
}

/**
* set the artistName
*
* @param artistName
*/
public void setArtistName(String artistName) {
this.artistName = artistName;
}

/**
* return the artistId
*
* @return
*/
public int getArtistID() {
return artistID;
}

/**
* set the artistId
*
* @param artistId
*/
public void setArtistID(int artistId) {
this.artistID = artistId;
}

/**
* @return the art
*/
public Art getArt() {
return art;
}

/**
* @param art
* the art to set
*/
public void setArt(Art art) {
this.art = art;
}

public int compareTo(Artist o) {
return this.getArt().compareTo(o.getArt());
}

/**
* toString method
*/
public String toString() {
return String.format("%-9d %-20s", this.artistID, this.artistName);
}
}

ArtistNode.java: (Modify to remove errors)

public class ArtistNode extends Artist
{
private ArtNode firstNode;
private ArtNode lastNode;
int totalEntries;
double totalValue;

public ArtistNode(String artistName, int artistID)
{
super(artistName,artistID);
this.firstNode = null;
this.lastNode = null;
totalEntries = 0;
totalValue = 0;
}

public int getTotalEntries() {
return totalEntries;
}

/**
* return the artistId
*
* @return
*/
public double getTotalValue() {
return totalValue;
}

public int compareTo(Artist o) {
return this.getArt().compareTo(o.getArt());
}

/**
* toString method
*/
public String toString() {
return String.format(Artist.getArtistName() + " " + ArtistNode.getArtistID() + " , %-9d , %-20s", this.totalEntries, this.totalValue);
}
}

Art.java:

public class Art implements java.lang.Comparable<Art> {

// Instance variables
private int artID;
private String artTitle;
private int appraisedValue;

/**
* Constructor
*
* @param artID
* - art id
* @param artTitle
* - title of the art
* @param appraisedValue
* - value
*
public Art(int artID, String artTitle, int appraisedValue) {
this.artID = artID;
this.artTitle = artTitle;
this.appraisedValue = appraisedValue;
}

/**
* @return the artID
*
public int getArtID() {
return artID;
}

/**
* @return the artTitle
*
public String getArtTitle() {
return artTitle;
}

/**
* @return the appraisedValue
*
public int getAppraisedValue() {
return appraisedValue;
}

/**
* @param artID
* the artID to set
*
public void setArtID(int artID) {
this.artID = artID;
}

/**
* @param artTitle
* the artTitle to set
*
public void setArtTitle(String artTitle) {
this.artTitle = artTitle;
}

/**
* @param appraisedValue
* the appraisedValue to set
*
public void setAppraisedValue(int appraisedValue) {
this.appraisedValue = appraisedValue;
}
  
public int compareTo(Art o) {
return (this.getArtID() - o.getArtID());
}

@Override
public String toString() {
return String.format("%-6d %-25s %d", artID, artTitle, appraisedValue);
}
}

Explanation / Answer

becasue of lack of time I was not able to provide details

package arts;

import java.io.IOException;
import java.util.Scanner;

public class Exam4Step1 {
   public static void main(String[] args) throws IOException {
       ArtMap artistMap = new ArtMap("exam4arts.txt");
       MyArtists artists= new MyArtists("exam4arts.txt");
       Scanner scanner = new Scanner(System.in);
       int id;
       // ask the name for the first time
       System.out.print("Please enter an Artist ID(0 to quit) ==> ");
       id = scanner.nextInt();

       // keep looping till user enters a id of 0 or less
       while (id > 0) {
           // get the ID from map
           String artist = artists.getArtist(id);

           // print the name
           if(artist==null){
               System.out.println("Artist not found!" );
           }else{
               System.out.println("Artist: " + artist);
           }
           // ask again for next input id
           System.out.print("Please enter an Art ID(0 to quit) ==> ");
           id = scanner.nextInt();
       }
       /*
       System.out.print("Please enter an Art ID(0 to quit) ==> ");
       id = scanner.nextInt();

       // keep looping till user enters a id of 0 or less
       while (id > 0) {
           // get the ID from map
           Integer ID = artistMap.getName(id);

           // print the name
           if(ID==null){
               System.out.println("Artist not found!" );
           }else{
               System.out.println("Artist = " + ID);
           }
           // ask again for next input id
           System.out.print("Please enter an Art ID(0 to quit) ==> ");
           id = scanner.nextInt();
       }*/
       System.out.println("Bye!");

       scanner.close();
   }
}

package arts;

import java.io.File;
import java.io.IOException;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

public class ArtMap {
   // map to store data
   Map<Integer, Integer> artistMap;

   public ArtMap(String fileName) throws IOException {
       // initialize the map
       artistMap = new TreeMap<>();

       Scanner in=new Scanner(new File(fileName));
       String line;
       // while file has lines
       while (in.hasNextLine()) {
           line=in.nextLine();
           String tokens[] = line.split("\s\s\s");
           artistMap.put(Integer.parseInt(tokens[0].trim()), Integer.parseInt(tokens[2].trim()));
       }

       // close reader
       in.close();
   }
   /*
   * Method which returns name corresponding to id
   */
   public Integer getName(int id) {
       if(artistMap.containsKey(id))
           return artistMap.get(id);
       return null;
   }
}

package arts;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.ListIterator;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

public class MyArtists implements Comparable<Artist> {
   Map<Integer, ArtistNode> nodeTree;;
   public ArrayList<ArtistNode> myArtistNodes = new ArrayList<ArtistNode>();
   public ArrayList<ArtNode> myArtNodes = new ArrayList<ArtNode>();
   ListIterator<ArtistNode> lr = myArtistNodes.listIterator();

   public MyArtists(String filename) {
       Scanner input;

       try {
           nodeTree=new TreeMap<Integer,ArtistNode>();
           input = new Scanner(new File(filename));
           String line;
           // while file has lines
           while (input.hasNextLine()) {
               line=input.nextLine();
               String tokens[] = line.split("\s\s\s");
               ArtistNode newA = new ArtistNode(tokens[1], Integer.parseInt(tokens[0].trim()));
               myArtistNodes.add(newA);
               nodeTree.put(Integer.parseInt(tokens[2].trim()), newA);
               while (lr.hasPrevious()) {
                   System.out.println(lr.previous());
               }
           }
           // close reader
           input.close();
       } catch (NumberFormatException | FileNotFoundException e) {
           e.printStackTrace();
       }
   }

   public void print(String heading, String outFile) {

       // write to file
       BufferedWriter writer;
       try {
           writer = new BufferedWriter(new FileWriter(outFile));
           writer.write(heading + " ");
           writer.write(System.getProperty("line.separator"));

           for (Artist a : myArtistNodes) {
               // writer.write(newA);
               writer.write(a.toString() + " ");

               writer.write(System.getProperty("line.separator"));
           }
           writer.flush();
           writer.close();
       } catch (IOException e) {
           e.printStackTrace();
       }

   }

   public static int compareTo(ArrayList<Artist> o1, ArrayList<Artist> o2) {
       o2.get(0);
       o1.get(0);
       int compareValue = (o2.get(0).getArtistID() - o1.get(0).getArtistID());
       return compareValue;
   }

   /**
   * Finds the artist with id and returns the array index
   */
   public static int getArtist(ArrayList<Artist>[] artistArtArray, int artistId) {
       for (int i = 0; i < artistArtArray.length; i++) {
           artistArtArray[i].get(0);
           if (artistArtArray[i].get(0).getArtistID() == artistId)
               return i;
       }
       return -1;
   }
   public String getArtist(int artistId) {
       if(nodeTree.containsKey(artistId))
           return nodeTree.get(artistId).toString();
       return null;
   }

   /*
   * // write to console public void printList() { for(Artist a :
   * myArtistNodes) { System.out.println(a.toString()); } }
   *
   * // write to console public void printList() { for(Art a : myArtNodes) {
   * System.out.println(a.toString()); } }
   *
   * public void append() {
   *
   * } /*public int indexOfArtistID(int artistID) { int index; return index;
   *
   * }
   */
   @Override
   public int compareTo(Artist o) {
       // TODO Auto-generated method stub
       return 0;
   }

}

package arts;

public class Artist implements java.lang.Comparable<Artist> {
   // Instance variables
   private int artistID; // id of artist
   private String artistName; // name of artist
   private Art art;

   /**
   * Constructor
   *
   * @param name
   * @param number
   */
   Artist(String name, int number) {
       this.artistID = number;
       this.artistName = name;
   }

   /**
   * Constructor
   *
   * @param artistID
   * @param artistName
   * @param art
   */
   public Artist(int artistID, String artistName, Art art) {
       this.artistID = artistID;
       this.artistName = artistName;
       this.art = art;
   }

   /**
   * return the artistName
   *
   * @return
   */
   public String getArtistName() {
       return artistName;
   }

   /**
   * set the artistName
   *
   * @param artistName
   */
   public void setArtistName(String artistName) {
       this.artistName = artistName;
   }

   /**
   * return the artistId
   *
   * @return
   */
   public int getArtistID() {
       return artistID;
   }

   /**
   * set the artistId
   *
   * @param artistId
   */
   public void setArtistID(int artistId) {
       this.artistID = artistId;
   }

   /**
   * @return the art
   */
   public Art getArt() {
       return art;
   }

   /**
   * @param art
   * the art to set
   */
   public void setArt(Art art) {
       this.art = art;
   }

   public int compareTo(Artist o) {
       return this.getArt().compareTo(o.getArt());
   }

   /**
   * toString method
   */
   public String toString() {
       return "Artist ="+artistID+" Name: "+artistName;
   }
}

package arts;

public class Art implements java.lang.Comparable<Art> {
   // Instance variables
   private int artID;
   private String artTitle;
   private int appraisedValue;
   /**
   * Constructor
   *
   * @param artID
   * - art id
   * @param artTitle
   * - title of the art
   * @param appraisedValue
   * - value
   */
   public Art(int artID, String artTitle, int appraisedValue) {
   this.artID = artID;
   this.artTitle = artTitle;
   this.appraisedValue = appraisedValue;
   }
   /**
   * @return the artID
   */
   public int getArtID() {
   return artID;
   }
   /**
   * @return the artTitle
   */
   public String getArtTitle() {
   return artTitle;
   }
   /**
   * @return the appraisedValue
   */
   public int getAppraisedValue() {
   return appraisedValue;
   }
   /**
   * @param artID
   * the artID to set
   */
   public void setArtID(int artID) {
   this.artID = artID;
   }
   /**
   * @param artTitle
   * the artTitle to set
   */
   public void setArtTitle(String artTitle) {
   this.artTitle = artTitle;
   }
   /**
   * @param appraisedValue
   * the appraisedValue to set
   */
   public void setAppraisedValue(int appraisedValue) {
   this.appraisedValue = appraisedValue;
   }
  
  
   public int compareTo(Art o) {
   return (this.getArtID() - o.getArtID());
   }
   @Override
   public String toString() {
   return "Total Arts: "+artID+" Total Value ="+appraisedValue;
   }
   }

sample output:

Please enter an Art ID(0 to quit) ==> 2
Artist: Artist =1086 Name: Untitled (desert landscape)
Please enter an Art ID(0 to quit) ==> 3
Artist: Artist =1010 Name: Untitled (land with adobe)
Please enter an Art ID(0 to quit) ==>

Please enter an Art ID(0 to quit) ==> 1023
Artist not found!
Please enter an Art ID(0 to quit) ==> 1003
Artist not found!
Please enter an Art ID(0 to quit) ==> 1038
Artist = 1
Please enter an Art ID(0 to quit) ==>

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote