<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="et">
	<id>http://courses.cs.taltech.ee/w/index.php?action=history&amp;feed=atom&amp;title=ITI0011RUS%3Atask12</id>
	<title>ITI0011RUS:task12 - Redigeerimiste ajalugu</title>
	<link rel="self" type="application/atom+xml" href="http://courses.cs.taltech.ee/w/index.php?action=history&amp;feed=atom&amp;title=ITI0011RUS%3Atask12"/>
	<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=ITI0011RUS:task12&amp;action=history"/>
	<updated>2026-05-14T05:07:36Z</updated>
	<subtitle>Selle lehekülje redigeerimiste ajalugu</subtitle>
	<generator>MediaWiki 1.35.9</generator>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=ITI0011RUS:task12&amp;diff=2334&amp;oldid=prev</id>
		<title>Aleksandr: Uus lehekülg: &#039;Срок сдачи упражнения &#039;&#039;&#039;19-е занятие (8 апреля)&#039;&#039;&#039;.  Общая информация об упражнениях: ITI0011RUS_Practice.&lt;br/&gt; ...&#039;</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=ITI0011RUS:task12&amp;diff=2334&amp;oldid=prev"/>
		<updated>2015-04-03T21:20:32Z</updated>

		<summary type="html">&lt;p&gt;Uus lehekülg: &amp;#039;Срок сдачи упражнения &amp;#039;&amp;#039;&amp;#039;19-е занятие (8 апреля)&amp;#039;&amp;#039;&amp;#039;.  Общая информация об упражнениях: &lt;a href=&quot;/pages/ITI0011RUS_Practice&quot; title=&quot;ITI0011RUS Practice&quot;&gt;ITI0011RUS_Practice&lt;/a&gt;.&amp;lt;br/&amp;gt; ...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Uus lehekülg&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Срок сдачи упражнения &amp;#039;&amp;#039;&amp;#039;19-е занятие (8 апреля)&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Общая информация об упражнениях: [[ITI0011RUS_Practice]].&amp;lt;br/&amp;gt;&lt;br /&gt;
Обратно на [[ITI0011RUS|страницу предмета]].&lt;br /&gt;
&lt;br /&gt;
== Описание ==&lt;br /&gt;
&lt;br /&gt;
Реализовать запрос твитов. В качестве входного параметра передается местоположение (город). Как результат работы программа распечатывает твиты, соответствующие данному месту (городу).&lt;br /&gt;
Перед распечаткой твиты необходимо сохранить в лист типа &amp;lt;code&amp;gt;Tweet&amp;lt;/code&amp;gt; (интерфейс из 2й домашней работы). Создайте новый класс, который реализует данный интерфейс. В созданном классе необходимо &amp;#039;&amp;#039;переопределить&amp;#039;&amp;#039; метод &amp;lt;code&amp;gt;toString()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Примечание&amp;#039;&amp;#039;&amp;#039;. &amp;lt;code&amp;gt;Tweet.getUser()&amp;lt;/code&amp;gt; в случае, если вы используете библиотеку &amp;lt;code&amp;gt;twitter4j&amp;lt;/code&amp;gt; должен возвращать &amp;lt;code&amp;gt;status.getUser().getScreenName()&amp;lt;/code&amp;gt;, где &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt; является одной из записей в результатах поиска (один объект &amp;lt;/code&amp;gt;Tweet&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Шаблон ==&lt;br /&gt;
&lt;br /&gt;
Ниже даны интерфейсы из 2й домашней работы. Вы должны создать классы, реализующиe их. Например, &amp;lt;code&amp;gt;public class SomeVeryReadableAndCoolNameTwitterSearch implements TwitterSearch { ... }&amp;lt;/code&amp;gt;. Все методы, которые есть в интерфейсе, необходимо реализовать. &lt;br /&gt;
&lt;br /&gt;
TwitterQuery.java:&lt;br /&gt;
&lt;br /&gt;
Тип данных, который хранит данные, необходимые для запроса в Твиттер. Содержит геттеры и сеттеры. Объект этого типа будет передаваться в запрос Твиттера (запрос будет использовать данные из этого объекта).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Data object for twitter query parameters.&lt;br /&gt;
 * It holds all the necessary values to make the&lt;br /&gt;
 * twitter search. The location is stored for caching.&lt;br /&gt;
 * When the data is read from the cache, the &lt;br /&gt;
 * main location should also be stored here.&lt;br /&gt;
 * If the geographical data is missing, the main location&lt;br /&gt;
 * (or the getLocation() value) is used to make the&lt;br /&gt;
 * query from twitter API.&lt;br /&gt;
 * @author Ago&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
public interface TwitterQuery {&lt;br /&gt;
	public void setLatitude(double latitude);&lt;br /&gt;
	public void setLongitude(double longitude);&lt;br /&gt;
	public void setRadius(double radius);&lt;br /&gt;
	public void setLocation(String location);&lt;br /&gt;
	/**&lt;br /&gt;
	 * The count of tweets to query.&lt;br /&gt;
	 * @param count Count of tweets to query&lt;br /&gt;
	 */&lt;br /&gt;
	public void setCount(int count);&lt;br /&gt;
	&lt;br /&gt;
	public double getLatitude();&lt;br /&gt;
	public double getLongitude();&lt;br /&gt;
	public double getRadius();&lt;br /&gt;
	public String getLocation();&lt;br /&gt;
	public int getCount();&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Checks whether the given instance has necessary&lt;br /&gt;
	 * parameters set. This is used in case of caching -&lt;br /&gt;
	 * if location exist but all the parameters do&lt;br /&gt;
	 * not exist, the cache needs to be updated.&lt;br /&gt;
	 * @return Whether latitude, longitude and radius are set&lt;br /&gt;
	 */&lt;br /&gt;
	public boolean isGeoSet();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TwitterSearch.java:&lt;br /&gt;
&lt;br /&gt;
Основная функциональность будет в этом классе: читаете данные, используя библиотеку twitter4j, и возвращаете список твитов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Twitter search functionality. The implementation&lt;br /&gt;
 * of this interface should be able to search tweets&lt;br /&gt;
 * from Twitter API.&lt;br /&gt;
 * @author Ago&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
public interface TwitterSearch {&lt;br /&gt;
	/**&lt;br /&gt;
	 * Given an object with query parameters send a &lt;br /&gt;
	 * query to Twitter API, reads out tweet information&lt;br /&gt;
	 * and returns a list of Tweet objects.&lt;br /&gt;
	 * @param query Query parameters to be used for search&lt;br /&gt;
	 * @return A list of Tweet objects&lt;br /&gt;
	 */&lt;br /&gt;
	public List&amp;lt;Tweet&amp;gt; getTweets(TwitterQuery query);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tweet.java:&lt;br /&gt;
&lt;br /&gt;
Тип данных для твита. Содержит геттеры и сеттеры. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import java.util.Date;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Data object for a tweet. Holds the text,&lt;br /&gt;
 * the author and the timestamp.&lt;br /&gt;
 * The methods are regular getters/setters.&lt;br /&gt;
 * @author Ago&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
public interface Tweet {&lt;br /&gt;
	public String getText();&lt;br /&gt;
	public void setText(String text);&lt;br /&gt;
	&lt;br /&gt;
	public String getUser();&lt;br /&gt;
	public void setUser(String user);&lt;br /&gt;
	&lt;br /&gt;
	public Date getTimestamp();&lt;br /&gt;
	public void setTimestamp(Date timestamp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ваш основной файл, который запускает программу, может быть таким:&lt;br /&gt;
Не изменяйте имена переменных и их типы — они используются для тестирования. Имена классов, создаваемых вами, могут быть любыми. Интерфейсы изменять нельзя. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Main {&lt;br /&gt;
&lt;br /&gt;
	public static TwitterSearch twitterSearch;&lt;br /&gt;
	public static List&amp;lt;Tweet&amp;gt; tweets;&lt;br /&gt;
	&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		init();&lt;br /&gt;
		// tallinn&lt;br /&gt;
		printTweets(59.4372155, 24.7453688, 5, 10);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Initialize twitter search object. It&amp;#039;s similar&lt;br /&gt;
	 * to HW2 constructor, where we have to instantiate the service. &lt;br /&gt;
	 */&lt;br /&gt;
	public static void init() {&lt;br /&gt;
		twitterSearch = new BestTwitterSearch();&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Given parameters, it prints out the tweets.&lt;br /&gt;
	 * It uses the service provided in init() &lt;br /&gt;
	 * (or test system can manually set its own service).&lt;br /&gt;
	 * Tweets have to be stored in tweets variable (for test system)&lt;br /&gt;
	 * @param latitude&lt;br /&gt;
	 * @param longitude&lt;br /&gt;
	 * @param radius&lt;br /&gt;
	 * @param count&lt;br /&gt;
	 */&lt;br /&gt;
	public static void printTweets(double latitude, double longitude, double radius, int count) {&lt;br /&gt;
		TwitterQuery twitterQuery = new BestTwitterQuery();&lt;br /&gt;
		twitterQuery.setCount(count);&lt;br /&gt;
		twitterQuery.setLatitude(latitude);&lt;br /&gt;
		twitterQuery.setLongitude(longitude);&lt;br /&gt;
		twitterQuery.setRadius(radius);&lt;br /&gt;
		// location is not needed&lt;br /&gt;
		tweets = twitterSearch.getTweets(twitterQuery);&lt;br /&gt;
		// print out&lt;br /&gt;
		for (Tweet t : tweets) {&lt;br /&gt;
			System.out.println(t);&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// the test system will check for tweets&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aleksandr</name></author>
	</entry>
</feed>