Whenever we think of vacations in India, first thing which flashes through our minds are the beautiful visuals of snow-covered mountains, dense forests, alpine meadows, flowing rivulets and gurgling waterfalls. Next question that immediately arises is, where to find such a heavenly beauty that can provide peace and solitude to our fatigued bodies and minds? All the conventional hill stations these days have been engulfed by commercialization and the serenity which we crave for is lost somewhere. But, if we leave aside these usual touristy spots and go off the beaten track to explore the yet unexplored areas, we can definitely find a place where peace, spirituality, serenity and bounty of nature still exists.
One of the best locations in Ladakh for a relaxing holiday is near the ‘Suru Valley ‘, which is the part of Kargil district in Ladakh. One of the most beautiful and fertile valleys of the Ladakh region, Suru Valley offers captivating vistas of the ‘Kun’ and ‘Nun’ peaks of the Himalayan range. The valley is blooming with orchards of mulberry, apples and apricots during spring season. The unmatched beauty and tranquillity of this place leave you mesmerized for your lifetime.
Located on the banks of the sacred Ganga River in Dehradun district of Uttarakhand, the holy city of Rishikesh needs no introduction. Situated on the foothills of Garhwal Himalayas, Rishikesh makes for an ideal escapade from the crowded and polluted city life.
Lepchajagat with its serene ambiance and pictorial view of Mt. Kanchenjunga has bewitched the mind of many tourists traveling in Darjeeling. Enclosed by the rich forested area, far from the maddening crowd and hassle of daily life, Lepchajagat has become the safe haven for the tourists who are looking for solitude amidst the wildlife. Lepchajagat is a sparely populated area with no big market place, hence it won't be wrong to say Lepchajagat is a secluded hamlet of Darjeeling District. Located on the road connecting Ghoom to Sukhiapokhari traveling to Lepchajagat is easier than anyone can imagine. Lepchajagat offers its visitor with an astounding view of the snow capped mountains of Himalayan range, the view of the daunting hills from Lepchajagat has made it famous among the tourist and botanical enthusiast.


Infinite Monkey Theorem
Solved using a genetic algorithm.
Settings
Target Text
Population Size
Mutation Rate
Speed (Computations per second)
Show number of phrases
Best Monkey
Generation #
Average Fitness:
Computation per second:
Mutation Rate:
Population Size:
Top Phrases


| About Dailyrotten |
|
Feedback
If you like this page, hate it, or would like to suggest changes,
<EMAIL_ADDRESS>is listening. This page
is experimental and somewhat different from what we usually offer, so please
do send your feedback.
Adding Stories
If you are a rotten newshound and you would like to suggest a story,
visit our submit page to
send us the URL. Stories that are accepted will have your name credited.
Posting Comments
In order to post comments to stories, you will have to
create an account.
Accounts will generally be validated within 24 hours, and of
course will be disabled if there is abuse.
Viewership
On the first full day this page went live, 100,000 people visited this Rotten
News page. Of course that was the day after the WTC attacks, so that number is
somewhat distorted. Right now this page gets between 50,000 and 75,000 people
every day.
Linking
We encourage everyone to link to this page; if you like it, others probably
will as well.
Other Rotten
Rotten
Gaping Maw
Celebrity Morgue
Mugshots
Rotten Store
Rate My Poo
Rate My Kitten
Rate My Finger
Penny Postcards
Phallic
Boners
Home
Make Dailyrotten your start page
|
|
|
October 05, 2002
Battle of the Bugs
ABC TV affiliates | Submitted by: La Rue
Massive roach infestation! "The city of Philadelphia has declared war on an
army of roaches in Fishtown."
"A friend helped the woman who lives in the home wheel away a few belongings
in a shopping cart. She blames her neighbors, claiming the roaches flocked
to her house whenever they sprayed their own homes... after the house was
sprayed the dead roaches were 8" deep in the bathtub."
|
|
Read article...
|
|
The perils of naughty mail order
Mainichi Daily News | Submitted by: LucrezaBorgia
"My wife and daughter were in the bath. I opened the door to let them know I
was home and what I saw nearly made my eyes pop out of my head. My daughter
was playing with the thing I'd been using to pleasure myself with the previous
night. And her bath toy dolphin was deeply imbedded in the same orifice where I
had been. My wife picked it up and asked me if it was a new type of sponge.
She told me it felt really good on her skin as she started to use it to scrub
her back. I walked out without saying anything."
|
|
Read article...
|
|
OCD busboy steals info of the Superwealthy
Wire Services | Submitted by: Crazy Quagga
"Police said last year that Abdallah had also breached bank, brokerage and
credit card accounts belonging to [Warren] Buffett, the chairman and chief
executive of Berkshire Hathaway Inc. whose investing prowess earned him the
nickname "the oracle of Omaha," as well as the accounts of Martha Stewart,
George Lucas, Oprah Winfrey, Ross Perot and Michael Bloomberg,
now mayor of New York City."
|
|
Read article...
|
|
Man lives after he is shot 25 times
New Orleans Times-Picayune | Submitted by: dogawful
In an ironic juxtaposition to the recent "sniper attacks" in Maryland
a New Orleans man was shot 25 times by a single assailant, and survived.
"The attacker walked up to him and began firing a handgun. Once that
weapon emptied, he produced a second weapon and continued to fire...
when the second weapon emptied, he produced yet a third and continued to fire."
|
|
Read article...
|
|
Mom abandons son she used for shoplifting
New Orleans Times-Picayune | Submitted by: dogawful
Not only did they get him to steal for them, but then they ditched on
him too: "A New Orleans couple were jailed in St. Bernard Parish after they
allegedly had their 8-year-old son try to steal $66 worth of groceries and
beer from an Arabi supermarket, then denied knowing him and abandoned
him when he was stopped while leaving the store."
|
|
Read article...
|
|
Mental teen starves, then becomes child
AZ Central | Submitted by: BTuna
Followup, mainly because we now have a picture: "Chester Lee Miller was
sick and starving, and barely able to stand when he knocked on a stranger's
door in Milton, Fla., last month to ask for a place to sleep. Janice Goodman
let him in, fixed him a sandwich and called her mother for help. When she
arrived, Chester's childlike greeting stunned them both: "Are you my new mommy?"
|
|
Read article...
|
|
Girl gathers friends, shoots self in head
Wire Services | Submitted by: anonymous
"Elizabeth Rangel called several friends over to talk behind Page Middle
School just before classes began and told them she did not want to live
anymore, they said. Rangel handed out several personal items, including two
rings and a compact disc, then pulled out a .9 mm pistol, pointed it at
her head and pulled the trigger."
|
|
Read article...
|
|
Saddam: Give piece a chance
Independent Online | Submitted by: meatload
A very short story, but: "Former Italian porn star La Cicciolina has
offered to give herself to Iraqi President Saddam Hussein in exchange for
world peace. "I would do it holding my nose and closing my eyes; I would
do it for peace," she told a reporter."
|
|
Read article...
|
|
Pravda: Cities found on the Moon
Pravda | Submitted by: anonymous
""Reasonable activity of an alien civilization showed up unexpectedly
close to us. However, we were not psychologically ready for it. We still
come across publications trying to find an answer to the following
question: Are we alone in the universe? At the same time, the presence
of reasoning beings has been detected close to our home, on the Moon.
However, this discovery was immediately classified as secret, as it
is so incredible that it even might shake the already existing social
principles, reports Russia's newspaper Vecherny Volgograd."
It seems that these days Pravda will report anything, including alien
civilizations on the moon. The second link shows frame AS10-32-4822, the
photo they suggest was ruins of an alien city. Clearly it is not.
|
|
Read article... and
This article...
|
|
Teenage wasteland in Honduras
BBC | Submitted by: Son of Benway
"Cynthia Carolina. She tells me she is 17. But she cannot remember
when she was born. To me she looks 14, at a push 15. She has a two year
old baby. I watch as she blows warm, moist breath into a plastic bag
filled with glue.   Then she lifts
her jumper and rubs her stomach and tells us that she is pregnant again."
|
|
Read article...
|
|
What price lobster for gringos?
National Geographic | Submitted by: Son of Benway
"In Sandy Bay, a collection of about 12 villages on the northeastern
coast of Nicaragua, there are roughly 2,500 divers. Izdepski estimates
that in the last five years, a third of them, more than 800 men, have
either died or suffered serious injuries from decompression sickness.
Men in wheelchairs and walkers push themselves up and down the dusty
streets of virtually every village along the shore. The only
functioning hyberbaric chamber in Nicaragua has recently broken."
|
|
Read article...
|
|
NYPD: Feel secure, Feel very secure.
New York Post | Submitted by: wingnut
"The Police Department is conducting its own secret intelligence
gathering operations about an out of state mosque, without informing
the FBI or its own detectives assigned to the Joint FBI-NYPD Terrorist
Task Force, The Post has learned... Since Raymond Kelly returned as
police commissioner in January in the wake of the World Trade Center
attacks, he has expanded the Intelligence Division, placing former
CIA operations chief David Cohen at its helm. The NYPD expansion has
caused friction with the FBI and the joint task force as police brass
at One Police Plaza signal a "go-it-alone" attitude while preaching
cooperation."
|
|
Read article...
|
|
The Few, The Proud, The Totally Gay
News and Observer | Submitted by: Son of Benway
"Police said the six Marines, identified only by their initials in court
papers, traveled to a Raleigh home last month hoping to make some extra
money doing yard work.  He then threatened
to turn the tapes over to the Marines' families and military superiors
if they refused to have sex with him again, police said."
|
|
Read article...
|
|
The weirdest white supremacist ever
Independent | Submitted by: Ann Onymous
"The white supremacist hid his racism from his Chinese wife, Oi Yee Yip,
whom he met while working at the John Radcliffe Hospital in Oxford in 1989.
The couple ran a Chinese takeaway in Birmingham until they sold it in the
early Nineties. They have lived apart since 1995... In interviews with
police, Tovey cited his wife's ethnicity, his love of music by Hendrix and
the soul singer Sade, and the presence of two black lead actors in his
favourite television programme, Red Dwarf, as evidence that he
was not a racist."
|
|
Read article...
|
|
What (goddess) women want...
Australian Broadcasting | Submitted by: angie_au
"A man has been arrested in a remote Indian village for allegedly beheading
a seven year old boy and offering his body as a "sacrifice" to a local deity,
police said."
|
|
Read article...
|
|
|
|
|


Chris Asiimwe is a renown author, public speaker, entrepreneur and one of the founders of KLIN Entertainment LLC- The Leading Gospel Music record Label.
His life philosophy is built around helping people around the world discover their true potential.
Chris also believes that all humans can maximise their full potential by activating the required principles highlighted in his books and other materials.
Upon being completely delievered from addictions, Chris Asiimwe set out on a mission to help other young people who are struggling with addictions.
He is also a Christian and advocates for high moral principles and standards.


Police probing Vote Leave Brexit campaign 'spending breaches' pass file to prosecutors
Vote Leave - which was backed by Boris Johnson - has already been fined £61,000 for breaking electoral law
by Dan Bloom, https://www.facebook.com/mirrordanbloomPolice have sent a file to prosecutors concerning allegations against the official campaign for Brexit.
Scotland Yard has sought ‘early investigative advice’ from the Crown Prosecution Service over claims about Vote Leave’s spending in the run-up to the 2016 referendum.
The Electoral Commission referred the matter to police in July 2018 when it fined Vote Leave £61,000 for breaking electoral law.
At the time, the Commission indicated police would look at “whether any persons have committed related offences which lie outside the Commission’s regulatory remit.”
The Met Police have now confirmed that they sent a file for “early investigative advice” to the CPS on October 17.
The move was first reported by the OpenDemocracy website.
Vote Leave was backed by high profile MPs including Boris Johnson and his senior aide Dominic Cummings was its campaign director.
Police and prosecutors have not arrested or charged anyone with a criminal offence, and senior figures from Vote Leave strongly deny criminal wrongdoing.
Seeking early investigative advice is a standard procedure for “serious, sensitive or complex” cases, according to guidance from the Director of Public Prosecutions.
It can also be used in “any case where a police supervisor considers it would be of assistance in helping to determine the evidence that will be required to support a prosecution or to decide if a case can proceed to court.”
A Scotland Yard spokesman said: “On Thursday, 17 October 2019 the MPS submitted a file to the CPS for Early Investigative Advice in relation to the second investigation, which followed a referral from the Electoral Commission on 17 July 2018 and concerns Vote Leave and BeLeave.”
In its investigation last year, the Commission slammed Vote Leave's decision to hand more than £600,000 to a then 23-year-old fashion student - which his group BeLeave spent on a data analytics and voter targeting firm.
The donation to Darren Grimes, days before the 2016 referendum, meant Vote Leave did not breach its £7million spending limit.
But in its original report the Commission said there was "significant evidence of joint working" between Mr Grimes and Vote Leave.
That meant Vote Leave should have declared the spending as its own, the watchdog said.
However, Mr Grimes later won an appeal overturning a separate £20,000 fine imposed on him personally by the Commission.
Mr Grimes said he was registered as an individual due to an “incorrectly ticked box on an application form” and said in July: “I am delighted and relieved that the court has found me innocent.”
The separate Leave.EU campaign had also previously faced a criminal probe but police dropped it with no charges being brought.
Senior Vote Leave figures did not comment when contacted by the Mirror.


The recommended convention is to use a parameterless method whenever there are
no parameters and the method have no side effects.
This convention supports the uniform access principle, which says that client code
should not be affected by a decision to implement an attribute as a field or method.
In accordance with Liskov substitution principle, as overriden method is parameterless,
the overriding method must also be declared as a method without side effects.
* Refer to Programming in Scala, 10.3 Defining parameterless methods


Burroughs 220 System Configuration
CANCEL
SAVE
SET DEFAULTS
System Properties:
2000
3000
4000
5000
6000
7000
8000
9000
10000
Word Memory Size
Console Input:
Position
Type
1
2
3
4
5
6
7
8
9
10
1
(not used)
Reader
2
(not used)
Reader
3
(not used)
Reader
4
(not used)
Reader
5
(not used)
Reader
6
(not used)
Reader
7
(not used)
Reader
8
(not used)
Reader
9
(not used)
Reader
10
(not used)
Reader
Console Output:
Position
Type
SPO
1
2
3
4
5
6
7
8
9
10
Format
Cols
Tabs
0
(not used)
Printer
Punch
Space
Tab
Car. Ret.
1
(not used)
Printer
Punch
Space
Tab
Car. Ret.
2
(not used)
Printer
Punch
Space
Tab
Car. Ret.
3
(not used)
Printer
Punch
Space
Tab
Car. Ret.
4
(not used)
Printer
Punch
Space
Tab
Car. Ret.
5
(not used)
Printer
Punch
Space
Tab
Car. Ret.
6
(not used)
Printer
Punch
Space
Tab
Car. Ret.
7
(not used)
Printer
Punch
Space
Tab
Car. Ret.
8
(not used)
Printer
Punch
Space
Tab
Car. Ret.
9
(not used)
Printer
Punch
Space
Tab
Car. Ret.
10
(not used)
Printer
Punch
Space
Tab
Car. Ret.
Cardatron Unit Selection:
Slot
Type
Algol Glyphs
Greenbar
Zero-Suppress Columns (set on device)
1
(not used)
Card Reader 1
Card Punch 7
Line Printer 7
2
(not used)
Card Reader 2
Card Punch 6
Line Printer 6
3
(not used)
Card Reader 3
Card Punch 5
Line Printer 5
4
(not used)
Card Reader 4
Card Punch 4
Line Printer 4
5
(not used)
Card Reader 5
Card Punch 3
Line Printer 3
6
(not used)
Card Reader 6
Card Punch 2
Line Printer 2
7
(not used)
Card Reader 7
Card Punch 1
Line Printer 1
Magnetic Tape Unit Selection:
Unit
Type
Designate
A
(not used)
TSU
DataFile
1
2
3
4
5
6
7
8
9
0
B
(not used)
TSU
DataFile
1
2
3
4
5
6
7
8
9
0
C
(not used)
TSU
DataFile
1
2
3
4
5
6
7
8
9
0
D
(not used)
TSU
DataFile
1
2
3
4
5
6
7
8
9
0
E
(not used)
TSU
DataFile
1
2
3
4
5
6
7
8
9
0
F
(not used)
TSU
DataFile
1
2
3
4
5
6
7
8
9
0
G
(not used)
TSU
DataFile
1
2
3
4
5
6
7
8
9
0
H
(not used)
TSU
DataFile
1
2
3
4
5
6
7
8
9
0
I
(not used)
TSU
DataFile
1
2
3
4
5
6
7
8
9
0
J
(not used)
TSU
DataFile
1
2
3
4
5
6
7
8
9
0


*Hold the Ctrl, Shift or Alt key to select range. You may also drag-select the range in most major browsers.


Structures
The following structures are available globally.
-
The connection properties of a
See moreCouchDBClient
instanceDeclaration
Swift
public struct ConnectionProperties
-
A struct representing the JSON response from CouchDB when an error occurs.
CouchDB reference:
See moreCouchDB_Error_Status
Declaration
Swift
public struct CouchDBError: Codable, Swift.Error, CustomStringConvertible
-
A struct representing the JSON returned when querying a Database or View. If
includeDocuments
was true for the query, each row will have an additionaldoc
field containing the JSON document. These documents can then be decoded to a given Swift type usingdecodeDocuments(ofType:)
.CouchDB reference:
All_Database_Documents
Usage Example:
See morestruct MyDocument: Document { let _id: String? var _rev: String? var value: String } database.retrieveAll(includeDocuments: true) { (allDocs, error) in if let allDocs = allDocs, let decodedDocs = allDocs.decodeDocuments(ofType: MyDocument) { for doc in decodedDocs { print("Retrieved MyDocument with value: \(doc.value)") } } }
Declaration
Swift
public struct AllDatabaseDocuments
-
A struct representing an array of JSON documents. This is used for adding or updating multiple documents at once using the bulk api.
CouchDB reference:
See more/db/_bulk_docs
Declaration
Swift
public struct BulkDocuments
-
A struct representing an item in the response JSON Array of Objects from an HTTP request to the _bulk_docs API.
CouchDB reference:
See more/db/_bulk_docs
Declaration
Swift
public struct BulkResponse: Codable
-
This struct represents the agreed upon fields and structure of a design documents. The filters, lists, shows and updates fields objects are mapping of function name to string function source code. The views mapping is the same except that values are objects with map and reduce (optional) keys which also contains functions source code.
CouchDB reference:
See more/db/_design/design-doc
Declaration
Swift
public struct DesignDocument: Document


I'm Informatics engineer based in Barcelona, I was graduated from the Universitat Politècnica de Catalunya, specialized in Software Engineering and Information Systems. Furthermore, I'm a self taught Full Stack Developer.
During my last university year I lived in Stockholm, Sweden. At the time, I studied in KTH Royal Institute of Technology doing the last courses of my degree.
Concerning my work experience, I worked as a smartphone applications developer based on Xamarin Studio for IOS, Android and Windows Phone. In adition to being a developer, I was a universitary tutor teaching many courses of my dregree and the Statistics degree.
My passion is to use technology based solutions, to help solve real world challenges.


| MPI_REDUCE( sendbuf, recvbuf, count, datatype, op, root, comm) | |
| IN sendbuf | address of send buffer (choice) |
| OUT recvbuf | address of receive buffer (choice, significant only at root) |
| IN count | number of elements in send buffer (non-negative integer) |
| IN datatype | data type of elements of send buffer (handle) |
| IN op | reduce operation (handle) |
| IN root | rank of root process (integer) |
| IN comm | communicator (handle) |
int MPI_Reduce(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm)
MPI_REDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, ROOT, COMM, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER COUNT, DATATYPE, OP, ROOT, COMM, IERROR
void MPI::Comm::Reduce(const void* sendbuf, void* recvbuf, int count, const MPI::Datatype& datatype, const MPI::Op& op, int root) const = 0
If comm is an intracommunicator,
MPI_REDUCE combines the elements provided
in the input buffer of each process in the
group, using the operation op, and returns the combined value in
the output buffer of the process with rank root.
The input buffer is defined by the arguments sendbuf,
count and datatype; the output buffer is defined by
the arguments recvbuf, count and datatype;
both have the same number of elements, with the same type.
The routine is called by all group members using the same arguments
for count, datatype, op, root and comm.
Thus, all processes provide input buffers and output buffers of the
same length, with elements of the same type.
Each process can provide one element, or a sequence of elements,
in which case the
combine operation is executed element-wise on each entry of the sequence.
For example, if the operation is MPI_MAX and the send buffer
contains two elements that are floating point numbers ( count = 2 and
datatype = MPI_FLOAT), then
and
.
Section Predefined Reduction Operations , lists the set of predefined operations provided by MPI. That section also enumerates the datatypes each operation can be applied to. In addition, users may define their own operations that can be overloaded to operate on several datatypes, either basic or derived. This is further explained in Section User-Defined Reduction Operations .
The operation op is always assumed to be associative. All predefined operations are also assumed to be commutative. Users may define operations that are assumed to be associative, but not commutative. The ``canonical'' evaluation order of a reduction is determined by the ranks of the processes in the group. However, the implementation can take advantage of associativity, or associativity and commutativity in order to change the order of evaluation. This may change the result of the reduction for operations that are not strictly associative and commutative, such as floating point addition.
Advice
to implementors.
It is strongly recommended that MPI_REDUCE be implemented so
that the same result be obtained
whenever the function is applied on the same arguments,
appearing in the same order. Note that this may
prevent optimizations that take
advantage of the physical location of processors.
( End of advice to implementors.)
The datatype argument of MPI_REDUCE must be
compatible with
op.
Predefined operators work only with
the MPI types listed in Section Predefined Reduction Operations
and
Section MINLOC and MAXLOC
. Furthermore, the
datatype and op given for predefined operators
must be the same on all processes.
Note that it is possible for users to supply different user-defined operations
to MPI_REDUCE in each process. MPI does not define which
operations are used on which operands in this case.
User-defined operators may operate on general, derived datatypes.
In this case, each argument that
the reduce operation is applied to is one element described by such a datatype,
which may contain several basic values.
This is further explained in Section User-Defined Reduction Operations
.
Advice to users.
Users should make no assumptions about how MPI_REDUCE is
implemented. Safest is to ensure that the same function is passed to
MPI_REDUCE by each process.
( End of advice to users.)
Overlapping datatypes are permitted in ``send'' buffers.
Overlapping datatypes in ``receive'' buffers are erroneous
and may give unpredictable results.
The ``in place'' option for intracommunicators is specified by passing the value MPI_IN_PLACE to the argument sendbuf at the root. In such case, the input data is taken at the root from the receive buffer, where it will be replaced by the output data.
If comm is an intercommunicator, then the call involves all processes in the intercommunicator, but with one group (group A) defining the root process. All processes in the other group (group B) pass the same value in argument root, which is the rank of the root in group A. The root passes the value MPI_ROOT in root. All other processes in group A pass the value MPI_PROC_NULL in root. Only send buffer arguments are significant in group B and only receive buffer arguments are significant at the root.


--- layout: default title: Now ---
It’s fall, and I’m keeping busy.
Professionally, I’m gearing up to find a co-op job for next summer. I’d like to combine my interest in policy with my experience as a web developer. How or if that will manifest, I’m still sorting out.
Academically, I’m starting a small research project into how Ontario teachers shared ideas and thoughts during the advent of standardized(ish) educational computing during the 1980s. It’s really cool!
I’m also establishing a writing practice. Each week, I’ve been publishing an email newsletter, both to keep up with friends and to encourage a regular writing routine.
I’m facing a just-less-than-two-month stint here in Ottawa, which excites me. I love this city and I think I love it most during this season. I’m aiming for steadiness and consistency: reinforcing routines, seeking stability. But I’m also trying to open myself up a bit socially. It’s coming… slowly. Mostly, I’m just noticing the months fly by.
This page is inspired by Derek Sivers.
Last updated .


public interface HGCache<Key,Value>
A simple generic, read-only caching interface. An implementation must be initialized
by providing the means to load data that is not in the cache - a
RefResolver
instance. Therefore, there's no put
method, the cache makes the decision if and when to actually keep data in it. Consequently,
the cache is operational only when there is RefResolver
currently in effect.
Otherwise, the get
will simply throw a NullPointerException
when attempting to access it.
Note, however, that there is a remove
to explicitly remove an element from
the cache. This method should generally be called only when the item is being removed
from permanent storage as well.
When and how element are purged from the cache is not mandated by the interface.
NOTE: Implementation are expected to be thread-safe.
| Modifier and Type | Method and Description |
|---|---|
void |
clear()
Clear (i.e.
|
Value |
get(Key key)
Retrieve an element from the cache.
|
Value |
getIfLoaded(Key key)
Retrieve and return an element from the cache if it's already there or
return
null otherwise. |
RefResolver<Key,Value> |
getResolver()
Return the
RefResolver used to load data in the cache. |
boolean |
isLoaded(Key key)
Return
true if the element with the given key is currently in the
cache and false otherwise. |
void |
remove(Key key)
Force removal of an element from the cache.
|
void |
setResolver(RefResolver<Key,Value> resolver)
Set the
RefResolver to be used to load data in the cache. |
int |
size()
Return the number of elements currently in the cache.
|
void setResolver(RefResolver<Key,Value> resolver)
Set the RefResolver
to be used to load data in the cache.
RefResolver<Key,Value> getResolver()
Return the RefResolver
used to load data in the cache.
Value get(Key key)
Retrieve an element from the cache. If the element is already in the cache,
it is simply returned. Otherwise, the RefResolver
will be used to
obtain it automatically from permanent storage.
key
- The key of the element.Value getIfLoaded(Key key)
Retrieve and return an element from the cache if it's already there or
return null
otherwise. This method will not call the
RefResolver
when the element is not found in the cache.
key
- The key of the element.null
is it's not found in the cache.boolean isLoaded(Key key)
Return true
if the element with the given key is currently in the
cache and false
otherwise.
void remove(Key key)
Force removal of an element from the cache. This method is generally used when the data has been (or is being) removed from the permanent storage as well.
key
- The key of the element.void clear()
Clear (i.e. force removal of) all elements from the cache.
int size()
Return the number of elements currently in the cache.


{% extends "base.html" %} {% block content %}
{% if profile.verified %} {% if moderation_required %} Your account has been verified. Account moderators have been notified and will begin reviewing your account request. {% else %} Your account has been verified. You can now login. {% endif %} {% else %} This account has already been verified or does not exist. No further action is necessary. {% endif %}


The above button will only link the files locally but won't upload anything to Dataverse.
| Web Resource Id | Display Name | Local File Name | Server Path | Local Path | Confidence Level | Linked Status | Action |
|---|---|---|---|---|---|---|---|
| Test | Test | Test | Test | Test | 100 | check_circle | Upload |
The above button will only link the files locally but won't upload anything to Dataverse.
| Web Resource Id | Display Name | Local File Name | Server Path | Local Path | Confidence Level | Linked Status | Action |
|---|---|---|---|---|---|---|---|
| Test | Test | Test | Test | Test | 100 | check_circle | Upload |


Escalation Gallery
See the different plotting options with accompanying configuration settings
Config Helps
Main Config
Advanced Plotly
Example Plots
Scatter Plot
Line Plot
Bar Graph
Histogram
Box Plot
3D Scatter Plot
Extra Options
Hover Text
Group By
Aggregate Data
Filters on the Data
Group by and Axis Selector
Shapes and lines annotations


Grand Theft Auto series seperated by each installments :
- GTA1 which was first installments of series
- released in 1997
- GTA:London 1961 and London 1969 which were expansions of first game
- released in 1998
- GTA 2
- released in 1999
- GTA:III which utilized 3D gameplay and was beginning of GTA series's success
- released in 2001
- GTA:Vice City which was prequel of GTA:III 15 years ago
- released in 2002
- GTA:San Andreas which was sequel of GTA:Vice City 6 years later
- released in 2004
- GTA:Advanced which played on GameboyAdvance only
- released in 2004 on same day which launched GTA:San Andreas
- GTA:Liberty City Stories which prequel of GTA:III 3 years ago
- released in 2005
- GTA:Vice City Stories which prequel of GTA:Vice City 2 years ago
- released in 2006
- GTA:IV which is the new era of series since it was first installment utilized HD graphic
- released in 2008
- GTA:The Lost and Damned which was 1st episodes of GTA:IV
- released in early 2009
- GTA:Chinatown wars which was 1st and last GTA played on Nintendo:DS
- released in early 2009
- GTA:The Ballad of Gay Tony which was 2nd episodes of GTA:IV
- released in late 2009
- GTA:V which is most successful and advanced installment of series
- released in late 2013
- GTA Online which is the latest series and be multiplayer version of GTA V
- released after main games one month later


QuickStart
Groovy, is.
firstName:
lastName:
age:
salary:
address.address1:
address.address2:
address.city:
address.state:
address.zip:
Favorites


BJP expels rebel MLA Saryu Roy for contesting against Jharkhand CM Raghubar Das
by Express Web DeskBy: Express Web Desk | New Delhi | Published: December 9, 2019 10:06:36 pm
Jharkhand rebel MLA Saryu Roy. (Twitter/Saryu Roy)
Rebel BJP leader Saryu Roy was expelled from the party for six years after he contested in the Jharkhand Assembly elections against Chief Minister and incumbent Jamshedpur East MLA, Raghubar Das.
Roy, a former state minister, contested as an Independent candidate after he was denied a ticket by the saffron party. Roy alleged he was denied a ticket at the behest of CM Raghubar Das.
Polling in Jamshedpur East was held on December 7 during the second phase. Apart from Das and Roy, Congress’ Gourav Vallabh and JVM’s Abhay Singh are also in the fray from the constituency. The results will be announced on December 23.
Earlier, Roy had initially said that he would contest from both Jamshedpur East and West, but filed nomination from only the former seat. He told the media that he would not beg for a party ticket.
“I tolerated a lot of corruption issues… I have been working for the party for long. The PM says he is my friend. But even then, if no one listens to me, then what should I say?” Roy had said in an interview with The Indian Express.
The former BJP leader is also credited with sending two former CMs to jail — in 1996, his letter to the then finance commissioner, alleging “fraudulent and excess withdrawals” from state treasuries in then united Bihar by Animal Husbandry department officials with fake bills led to various convictions, including that of Lalu Prasad, and he also flagged corrupt practices of various ministers in the Madhu Koda government in Jharkhand and flagged “irregularities” in allotment of iron ore mines.
For all the latest Elections News, download Indian Express App
- Tags:
- BJP
- Raghubar Das


{% load static %}
Logout · Wooglin
You've successfully been signed out.
Sign back in
We seek the height.


Highlight your code with a large set of themes without need of JavaScript. Just CSS and HTML
Just paste your code in the first code block and you'll get the preview instantly. You can change the language and theme by typing them in the text inputs.
<h1>¡Hola mundo!</h1>
LANG
THEME
Now you have your code set, you need to place the CSS of your theme, paste it before </head>
.
<link rel="stylesheet" href="URL">
This is the code highlighted by highlight.js, paste it wherever you want.


Eat
For those with pure food indulgence in mind,come
satisfy your desires with our ever changing
internationally and seasonally inspired
small plates.We are a scratch kitchen and love food,
lots of different food, just like you.
Drink
Our Sommelier has handpicked some of the most
delightful wines from across the world. If you are
looking for something a little more stiff, choose from
our selection of 50+ whiskeys. When it comes to Beer
we have you covered as well, with 14 craft beers to
choose from, we have something for everyone.
Desert
Albatross Kitchen Bar is here to help you plan your
special desert. From our private dining room to our
beautiful patio we can accommodate up to 250
guests. Our service and menu all come together to
create your perfect dining place.
THE EXPERIENCE
CULINARY DELIGHT
Specials


public class User
extends java.lang.Object
Transaction
| Modifier and Type | Field and Description |
|---|---|
private UserLocation |
address |
private int |
appID |
(package private) com.google.firebase.auth.FirebaseAuth |
auth |
(package private) com.google.firebase.firestore.CollectionReference |
bookRef |
(package private) com.google.firebase.firestore.FirebaseFirestore |
DB |
private java.lang.String |
dbID |
private java.lang.String |
email |
private java.lang.String |
instanceToken |
private java.lang.String |
phone |
private java.lang.String |
profile_picture |
private java.lang.String |
TAG |
(package private) com.google.firebase.firestore.CollectionReference |
transRef |
private java.lang.String |
username |
(package private) com.google.firebase.firestore.CollectionReference |
userRef |
| Constructor and Description |
|---|
User()
empty constructor used for firestore
|
User(java.lang.String username,
int appID,
java.lang.String DB_id,
java.lang.String email,
UserLocation address,
java.lang.String phone)
Default constructor for a user, used during registration
|
| Modifier and Type | Method and Description |
|---|---|
(package private) void |
borrowerCancelPickup(int bookID)
Allows a borrower to cancel a book pickup
|
void |
borrowerCancelRequest(int bookID)
Allows a borrower to cancel a request
|
void |
borrowerDropOffBook(int bookID)
Allows a borrower to return a book by scanning
|
void |
borrowerPickupBook(int bookID)
Allows borrowers to pickup an accepted book
|
void |
borrowerRequestBook(int bookID)
Request a book from a book owner
Add the request to borrower transaction list
|
UserLocation |
getAddress()
Get the current address for the user
|
int |
getAppID()
Returns the users appID
|
java.lang.String |
getDbID()
Get the current users Database ID
|
java.lang.String |
getEmail()
Get the current users email
|
java.lang.String |
getInstanceToken()
Get the users current instance token
|
java.lang.String |
getPhone()
Get the current users phone number
|
java.lang.String |
getProfile_picture()
Get the profile picture for the user
|
java.lang.String |
getUsername()
Ge the current users username
|
void |
ownerAcceptRequest(int t_id,
UserLocation location,
int bookID)
Accept a request for a book
|
void |
ownerAddLocation(UserLocation location)
Adds a location to the owners pickup location list
|
(package private) void |
ownerCancelPickup(int bookID)
Allows an owner to cancel a pickup
|
void |
ownerConfirmPickup(int bookID)
Let owner confirm pickup on a book
|
void |
ownerDeleteBook(int bookID)
Deletes a book from an Owners collection
Additionally it removes any Transactions associated with that book
|
void |
ownerDeleteLocation(UserLocation location)
Delete a location from the users pickup location list
|
void |
ownerDenyRequest(int t_id)
Deny the request for a book and notify the borrower that the request was declined
|
(package private) void |
ownerEditBook(java.lang.String title,
java.lang.String author,
long ISBN,
int bookID,
int year,
java.util.ArrayList<java.lang.String> photos)
Allow an owner to edit an existing book
|
void |
ownerEditProfile(java.lang.String username,
java.lang.String coverPhoto,
java.lang.String phone)
Edits the owners profile with new information
|
void |
ownerNewBook(java.lang.Long isbn,
java.lang.String title,
java.lang.String author,
int year,
java.util.ArrayList<java.lang.String> photos)
Adds a new book to the owners owned list
|
void |
ownerSetPickupLocation(UserLocation location,
int bookID)
Set the pickup location for a book
|
void |
ownerSignOff(int bookID)
Let owner signOff on a book, marking the book available
|
void |
passwordReset()
Send a password reset email to the current user
|
void |
setAddress(UserLocation address)
Set the new address for the user
|
void |
setAppID(int appID)
Set the users appID
Do not use this, it is used by firestore during de-serialization
|
void |
setDbID(java.lang.String dbID)
Set the users Database ID
Do not use this, it is used by firestore during de-serialization
|
void |
setEmail(java.lang.String email)
Set the users email
|
void |
setInstanceToken(java.lang.String instanceToken)
Set the users instance token
|
void |
setPhone(java.lang.String phone)
Set the users phone number
|
void |
setProfile_picture(java.lang.String profile_picture)
Set the users profile picture
|
void |
setUsername(java.lang.String username)
Set the owners username
Do not use this, as this can allow users to have duplicate usernames
|
void |
userChangeAddress(UserLocation location)
Change the users current address
|
void |
userDelete(android.content.Context context)
Delete a user from our system
https://medium.com/firebase-tips-tricks/how-to-delete-users-from-firebase-the-right-way-b4c348b2f75f
|
void |
userDeleteNotifications()
Delete all the notifications for the current user
Done recursively through a cloud function
|
private java.lang.String username
private int appID
private java.lang.String dbID
private UserLocation address
private java.lang.String phone
private java.lang.String email
private java.lang.String profile_picture
private java.lang.String instanceToken
private final java.lang.String TAG
com.google.firebase.auth.FirebaseAuth auth
com.google.firebase.firestore.FirebaseFirestore DB
com.google.firebase.firestore.CollectionReference userRef
com.google.firebase.firestore.CollectionReference transRef
com.google.firebase.firestore.CollectionReference bookRef
public User()
public User(java.lang.String username, int appID, java.lang.String DB_id, java.lang.String email, UserLocation address, java.lang.String phone)
username
- THe username of the userappID
- The appID of the userDB_id
- The authentication token used by the useremail
- The email used by the useraddress
- The users addresspublic void ownerNewBook(java.lang.Long isbn, java.lang.String title, java.lang.String author, int year, java.util.ArrayList<java.lang.String> photos)
isbn
- The new books ISBNtitle
- The title of the new bookauthor
- The author of the new bookyear
- The year the new book was releasedphotos
- The photos of the book in String formpublic void ownerAcceptRequest(int t_id, UserLocation location, int bookID)
t_id
- The transaction ID of the transaction to acceptpublic void ownerConfirmPickup(int bookID)
bookID
- The bookID of the book picked uppublic void ownerDenyRequest(int t_id)
t_id
- The request transaction to declinepublic void ownerSignOff(int bookID)
bookID
- The bookID of the book being signed off onvoid ownerEditBook(java.lang.String title, java.lang.String author, long ISBN, int bookID, int year, java.util.ArrayList<java.lang.String> photos)
title
- The updated titleauthor
- The updated authorISBN
- The updated ISBNbookID
- The ID of the book to updateyear
- The updated yearvoid ownerCancelPickup(int bookID)
bookID
- The ID of the book being picked uppublic void ownerDeleteBook(int bookID)
bookID
- The ID of the book to deletepublic void ownerAddLocation(UserLocation location)
location
- The new location being addedpublic void ownerEditProfile(java.lang.String username, java.lang.String coverPhoto, java.lang.String phone)
username
- The new username for the usercoverPhoto
- The new coverPhoto for the userphone
- The new phone number for the userpublic void ownerSetPickupLocation(UserLocation location, int bookID)
location
- The location to assign to the transactionbookID
- The book ID of the book for the transactionpublic void ownerDeleteLocation(UserLocation location)
location
- The location to removevoid borrowerCancelPickup(int bookID)
bookID
- The ID of the book being picked uppublic void borrowerRequestBook(int bookID)
bookID
- is the id of the book you wish to borrowpublic void borrowerDropOffBook(int bookID)
bookID
- The ID of the book the borrower is returningpublic void borrowerPickupBook(int bookID)
bookID
- The ID of the book the borrower is pickingpublic void borrowerCancelRequest(int bookID)
bookID
- The book ID of the book they no longer want to requestpublic void userDeleteNotifications()
public void passwordReset()
public void userChangeAddress(UserLocation location)
location
- The new location for the userpublic void userDelete(android.content.Context context)
context
- The current context of the applicationpublic java.lang.String getUsername()
public void setUsername(java.lang.String username)
username
- The new username for the userpublic int getAppID()
public void setAppID(int appID)
appID
- The new appIDpublic java.lang.String getDbID()
public void setDbID(java.lang.String dbID)
dbID
- The new database ID for the userpublic UserLocation getAddress()
public void setAddress(UserLocation address)
address
- new UserLocation object specifying the users new addresspublic java.lang.String getPhone()
public void setPhone(java.lang.String phone)
phone
- The new phone number for the current userpublic java.lang.String getEmail()
public void setEmail(java.lang.String email)
email
- The new email for the userpublic java.lang.String getProfile_picture()
public void setProfile_picture(java.lang.String profile_picture)
profile_picture
- The new string representation of the profile picturepublic java.lang.String getInstanceToken()
public void setInstanceToken(java.lang.String instanceToken)
instanceToken
- The new instance token for the user


In this talk, I will introduce the concept of promises, and discuss when and how they are useful. I will then demo an example of how I've used them to get rid of messy chains of call-backs and produce something much cleaner.
I will also demo a way of using promises, generators, let and for-of, all of which were introduced ES6, to provide an elegant way to chain asynchronous methods in a synchronous way.
Promises to help avoid callback hell.
Speaker Bio:
Katharine has been a developer at Investec for the past year and a half, where she currently works primarily in JS and ObjC. She is passionate about coding and continuously finding ways to improve her craft. She also really loves maths, especially graph theory (in which which she recently completed a masters degree). She fancies herself something of an activist, and is outspoken about her experiences as a transgender woman in tech.


NOTE: This article is OLD! (From 2012!). Information in it may be out of date or outright useless, and I have no plans to update it. Beware!
I’ve recently decided that I need to go open source for my hobby projects, namely because I’ve reached a point where Unity Free is becoming too restrictive for my tastes, yet I’m still too poor to buy Unity Pro (one day I’ll make a game that pays for more than a night at a bar, but that day hasn’t happened yet).
After spending a long week trying to make JMonkey suit my needs (namely: an asset pipeline that doesn’t make me want to shoot myself), I abandoned it and meekly returned to the engine of my third year at Humber: Ogre3D. I had only worked with the precompiled windows binaries until now, but how hard could building it from source (because if I’m going open source, I may as well embrace the whole deal) on my mac be?
Three days of pulling my hair out later, I finally have not only Ogre 1.81 built on my mac, but I also have the Xcode 4 template project compiling, and because theres absolutely no reason that ANYONE should have to spend three days trying to weed through outdated tutorials, I’m posting the whole process here in exhaustive detail, with the hopes that it helps at least one other poor soul trying to do this.
This post will ONLY cover building the engine itself. The next article will cover how to get the Xcode 4 templates to work (they’re broken in some weird spots in Xcode 4.5).
Ingredients
- OGRE 1.8.1 Source for Linux/OSX
- Mac OS X Ogre Dependencies – (this tutorial assumes you’re grabbing the precompiled ones, just to limit the number of things that can go wrong)
- CG Framework
- CMake <IP_ADDRESS>
- This tutorial assumes you’re using Xcode 4.5, although I don’t know if that makes a difference for what we’re doing.
Setting up the source directory
- Extract the Ogre src zip file into wherever you want your Ogre SDK to be installed to. I just put it in my Macintosh HD directory so that it was easy to find, but I think the more correct place to put it is in ~/Library/Developer/SDKs
- Extract the precompiled dependencies into the top level folder in the ogre sdk directoy (in my case /ogre_src_v1-8-1/)
- Create a directory in your root folder called “boost”
- Drag the folder called boost out of Dependencies/include into the boost folder you just made
- Create a folder called lib in the boost folder (ie/ /ogre_src_v1-8-1/boost/lib)
- drag the boost libraries at Dependencies/lib into this folder.
Cooking With CMake
- Start CMake’s GUI tool
- Hit the Browse Source button on the top right, and select the ogre sdk folder that you’ve been working with<
- Copy and paste this directory into the “Where to build the binaries” field as well. Add the name of your build folder to the end of this path. For me, this was /ogre_src_v1-8-1/1.81, but the name of folder isn’t important, it’s just important that this build folder IS NOT your root sdk folder. That way, if something goes wrong, you can start the build process over again without having to do all the previous steps.
- Hit “Configure” and make sure that “Xcode” and “Use default native compilers” is selected. Then click done
- You should see a bunch of options highlighted in red. That’s fine. Ensure that OGRE_BUILD_CG is selected, and then press configure again. NOTE: the Cmake console will show a number of warnings in red. IGNORE THESE.
- Once that’s done, click “Generate” and exit CMake
Building Ogre
- Navigate to your build directory now, and open the Xcode project you just generated.
- Delete i386 from your project’s valid architectures (otherwise boost complains. Long term, I think only building for 64 bit is going to cause some problems, but in the interest of getting things running quickly, I ignored these worries for now)
- Set your project to build for “My Mac 64-bit,” and your Architectures to “64-bit-intel”
- Hit build, watch the magic happen.
- If you want to, once the build is complete, change your build to release mode and build again to get Ogre built in release.
Verifying the Build
- You should now have 2 folders in your build directories bin folder. (Release and Debug), inside each folder should be a copy of SampleBrowser.app. To ensure everything is working, run one of these programs and go through each sample.
- Hopefully all the samples should be in working order. Congratulations, you now have a built copy of Ogre sitting on your computer!
If you run into any problems, message me on twitter and I’ll do my best to figure out what’s going on with your build. I’m definitely not an expert, or even demonstrably good at using Ogre, but I’d like to think that all the troubleshooting I’ve done this week makes me a decent resource when it comes to just building the engine on mac. Good luck!


Work
I contribute in many ways to my household and community. Please reach out if you’re interested in the following services:
- Morale booster
- Cuddler
- Hiking companion
- Home defender
- Floor licker
I contribute in many ways to my household and community. Please reach out if you’re interested in the following services:


Getting Started with Tilia Data Entry¶
Creating a New Tilia File¶
Open up the Tilia program and open a new file (File > New). A new window will open up, with two tabs at the top (Data & Metadata), several columns (Code, Name and Group) and a single header cell, by default Pollen.
The cell that contains the term Pollen can be modified to represent one of the other dataset types that Neotoma supports. To switch dataset types, click on the dropdown arrow to the right within the cell and select the appropriate data type.
Once you have selected the dataset type, it’s possible to then load the lookup files that Tilia uses to standardize taxonomy and other associated sample information.
Lookup Files¶
Tilia uses a series of lookup files that contain the structured variable entries available for different dataset types (taxa, elements, units, etc), depositional environments, geopolitical units, etc. Upon installation of Tilia, these lookup files will be downloaded to your local machine, and so every time you work with Tilia you need to ‘point’ Tilia to the appropriate lookup files for the datasets you are working with.
To load the lookup files, click Tools > Variable Lookup. The following window will appear:
Then choose the tables that apply to the dataset type you are entering (you can use the Browse button if you don’t see what you need). In general, these will be auto-filled. This enables you to provide your own tables if needed, however, custom tables may make the upload & validation process more difficult for the Data Stewards. In the above figure, you can see the “Long Form” entry. The “Short Form” allows you to define only the Taxa Names and “Modifiers”. For the default lookup tables, there is no difference between the set of lookup files that are loaded with the “Short Form” vs “Long Form” entries.
Because of the way lookup tables are structured, it is often difficult to include two data types at the same time, since units or taphonomies specific to both proxies may not be available simultaneously.
A recommended practice is to periodically refresh the lookup files on your local machine to match those available through the database. This is particularly important in cases where new taxa are being added (for example, if a group is making a new push to enter data from a new region, and subsequently entering new taxa). To do this, click Neotoma > Lookup and then select the specific lookup file you would like to refresh.


| 1 | /* =========================================================== | |
| 2 | * JFreeChart : a free chart library for the Java(tm) platform | |
| 3 | * =========================================================== | |
| 4 | * | |
| 5 | * (C) Copyright 2000-2009, by Object Refinery Limited and Contributors. | |
| 6 | * | |
| 7 | * Project Info: http://www.jfree.org/jfreechart/index.html | |
| 8 | * | |
| 9 | * This library is free software; you can redistribute it and/or modify it | |
| 10 | * under the terms of the GNU Lesser General Public License as published by | |
| 11 | * the Free Software Foundation; either version 2.1 of the License, or | |
| 12 | * (at your option) any later version. | |
| 13 | * | |
| 14 | * This library is distributed in the hope that it will be useful, but | |
| 15 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
| 16 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public | |
| 17 | * License for more details. | |
| 18 | * | |
| 19 | * You should have received a copy of the GNU Lesser General Public | |
| 20 | * License along with this library; if not, write to the Free Software | |
| 21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
| 22 | * USA. | |
| 23 | * | |
| 24 | * [Java is a trademark or registered trademark of Sun Microsystems, Inc. | |
| 25 | * in the United States and other countries.] | |
| 26 | * | |
| 27 | * --------------------- | |
| 28 | * CrosshairOverlay.java | |
| 29 | * --------------------- | |
| 30 | * (C) Copyright 2009, by Object Refinery Limited. | |
| 31 | * | |
| 32 | * Original Author: David Gilbert (for Object Refinery Limited); | |
| 33 | * Contributor(s): -; | |
| 34 | * | |
| 35 | * Changes: | |
| 36 | * -------- | |
| 37 | * 09-Apr-2009 : Version 1 (DG); | |
| 38 | * 19-May-2009 : Fixed FindBugs warnings, patch by Michal Wozniak (DG); | |
| 39 | * | |
| 40 | */ | |
| 41 | ||
| 42 | package org.jfree.chart.panel; | |
| 43 | ||
| 44 | import java.awt.Graphics2D; | |
| 45 | import java.awt.Paint; | |
| 46 | import java.awt.Rectangle; | |
| 47 | import java.awt.Shape; | |
| 48 | import java.awt.Stroke; | |
| 49 | import java.awt.geom.Line2D; | |
| 50 | import java.awt.geom.Point2D; | |
| 51 | import java.awt.geom.Rectangle2D; | |
| 52 | import java.beans.PropertyChangeEvent; | |
| 53 | import java.beans.PropertyChangeListener; | |
| 54 | import java.io.Serializable; | |
| 55 | import java.util.ArrayList; | |
| 56 | import java.util.Iterator; | |
| 57 | import java.util.List; | |
| 58 | import org.jfree.chart.ChartPanel; | |
| 59 | import org.jfree.chart.JFreeChart; | |
| 60 | import org.jfree.chart.axis.ValueAxis; | |
| 61 | import org.jfree.chart.event.OverlayChangeEvent; | |
| 62 | import org.jfree.chart.plot.Crosshair; | |
| 63 | import org.jfree.chart.plot.PlotOrientation; | |
| 64 | import org.jfree.chart.plot.XYPlot; | |
| 65 | import org.jfree.chart.text.TextAnchor; | |
| 66 | import org.jfree.chart.text.TextUtilities; | |
| 67 | import org.jfree.chart.util.ObjectUtilities; | |
| 68 | import org.jfree.chart.util.PublicCloneable; | |
| 69 | import org.jfree.chart.util.RectangleAnchor; | |
| 70 | import org.jfree.chart.util.RectangleEdge; | |
| 71 | ||
| 72 | /** | |
| 73 | * An overlay for a {@link ChartPanel} that draws crosshairs on a plot. | |
| 74 | * | |
| 75 | * @since 1.0.13 | |
| 76 | */ | |
| 77 | public class CrosshairOverlay extends AbstractOverlay implements Overlay, | |
| 78 | PropertyChangeListener, PublicCloneable, Cloneable, Serializable { | |
| 79 | ||
| 80 | /** Storage for the crosshairs along the x-axis. */ | |
| 81 | private List xCrosshairs; | |
| 82 | ||
| 83 | /** Storage for the crosshairs along the y-axis. */ | |
| 84 | private List yCrosshairs; | |
| 85 | ||
| 86 | /** | |
| 87 | * Default constructor. | |
| 88 | */ | |
| 89 | public CrosshairOverlay() { | |
| 90 | super(); | |
| 91 | this.xCrosshairs = new java.util.ArrayList(); | |
| 92 | this.yCrosshairs = new java.util.ArrayList(); | |
| 93 | } | |
| 94 | ||
| 95 | /** | |
| 96 | * Adds a crosshair against the domain axis and sends an | |
| 97 | * {@link OverlayChangeEvent} to all registered listeners. | |
| 98 | * | |
| 99 | * @param crosshair the crosshair (null not permitted). | |
| 100 | * | |
| 101 | * @see #removeDomainCrosshair(org.jfree.chart.plot.Crosshair) | |
| 102 | * @see #addRangeCrosshair(org.jfree.chart.plot.Crosshair) | |
| 103 | */ | |
| 104 | public void addDomainCrosshair(Crosshair crosshair) { | |
| 105 |
1
1. addDomainCrosshair : negated conditional → NO_COVERAGE |
if (crosshair == null) { |
| 106 | throw new IllegalArgumentException("Null 'crosshair' argument."); | |
| 107 | } | |
| 108 | this.xCrosshairs.add(crosshair); | |
| 109 |
1
1. addDomainCrosshair : removed call to org/jfree/chart/plot/Crosshair::addPropertyChangeListener → NO_COVERAGE |
crosshair.addPropertyChangeListener(this); |
| 110 |
1
1. addDomainCrosshair : removed call to org/jfree/chart/panel/CrosshairOverlay::fireOverlayChanged → NO_COVERAGE |
fireOverlayChanged(); |
| 111 | } | |
| 112 | ||
| 113 | /** | |
| 114 | * Removes a domain axis crosshair and sends an {@link OverlayChangeEvent} | |
| 115 | * to all registered listeners. | |
| 116 | * | |
| 117 | * @param crosshair the crosshair (null not permitted). | |
| 118 | * | |
| 119 | * @see #addDomainCrosshair(org.jfree.chart.plot.Crosshair) | |
| 120 | */ | |
| 121 | public void removeDomainCrosshair(Crosshair crosshair) { | |
| 122 |
1
1. removeDomainCrosshair : negated conditional → NO_COVERAGE |
if (crosshair == null) { |
| 123 | throw new IllegalArgumentException("Null 'crosshair' argument."); | |
| 124 | } | |
| 125 |
1
1. removeDomainCrosshair : negated conditional → NO_COVERAGE |
if (this.xCrosshairs.remove(crosshair)) { |
| 126 |
1
1. removeDomainCrosshair : removed call to org/jfree/chart/plot/Crosshair::removePropertyChangeListener → NO_COVERAGE |
crosshair.removePropertyChangeListener(this); |
| 127 |
1
1. removeDomainCrosshair : removed call to org/jfree/chart/panel/CrosshairOverlay::fireOverlayChanged → NO_COVERAGE |
fireOverlayChanged(); |
| 128 | } | |
| 129 | } | |
| 130 | ||
| 131 | /** | |
| 132 | * Clears all the domain crosshairs from the overlay and sends an | |
| 133 | * {@link OverlayChangeEvent} to all registered listeners. | |
| 134 | */ | |
| 135 | public void clearDomainCrosshairs() { | |
| 136 |
1
1. clearDomainCrosshairs : negated conditional → NO_COVERAGE |
if (this.xCrosshairs.isEmpty()) { |
| 137 | return; // nothing to do | |
| 138 | } | |
| 139 | List crosshairs = getDomainCrosshairs(); | |
| 140 |
2
1. clearDomainCrosshairs : changed conditional boundary → NO_COVERAGE 2. clearDomainCrosshairs : negated conditional → NO_COVERAGE |
for (int i = 0; i < crosshairs.size(); i++) { |
| 141 | Crosshair c = (Crosshair) crosshairs.get(i); | |
| 142 | this.xCrosshairs.remove(c); | |
| 143 |
1
1. clearDomainCrosshairs : removed call to org/jfree/chart/plot/Crosshair::removePropertyChangeListener → NO_COVERAGE |
c.removePropertyChangeListener(this); |
| 144 | } | |
| 145 |
1
1. clearDomainCrosshairs : removed call to org/jfree/chart/panel/CrosshairOverlay::fireOverlayChanged → NO_COVERAGE |
fireOverlayChanged(); |
| 146 | } | |
| 147 | ||
| 148 | /** | |
| 149 | * Returns a new list containing the domain crosshairs for this overlay. | |
| 150 | * | |
| 151 | * @return A list of crosshairs. | |
| 152 | */ | |
| 153 | public List getDomainCrosshairs() { | |
| 154 |
1
1. getDomainCrosshairs : mutated return of Object value for org/jfree/chart/panel/CrosshairOverlay::getDomainCrosshairs to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return new ArrayList(this.xCrosshairs); |
| 155 | } | |
| 156 | ||
| 157 | /** | |
| 158 | * Adds a crosshair against the range axis and sends an | |
| 159 | * {@link OverlayChangeEvent} to all registered listeners. | |
| 160 | * | |
| 161 | * @param crosshair the crosshair (null not permitted). | |
| 162 | */ | |
| 163 | public void addRangeCrosshair(Crosshair crosshair) { | |
| 164 |
1
1. addRangeCrosshair : negated conditional → NO_COVERAGE |
if (crosshair == null) { |
| 165 | throw new IllegalArgumentException("Null 'crosshair' argument."); | |
| 166 | } | |
| 167 | this.yCrosshairs.add(crosshair); | |
| 168 |
1
1. addRangeCrosshair : removed call to org/jfree/chart/plot/Crosshair::addPropertyChangeListener → NO_COVERAGE |
crosshair.addPropertyChangeListener(this); |
| 169 |
1
1. addRangeCrosshair : removed call to org/jfree/chart/panel/CrosshairOverlay::fireOverlayChanged → NO_COVERAGE |
fireOverlayChanged(); |
| 170 | } | |
| 171 | ||
| 172 | /** | |
| 173 | * Removes a range axis crosshair and sends an {@link OverlayChangeEvent} | |
| 174 | * to all registered listeners. | |
| 175 | * | |
| 176 | * @param crosshair the crosshair (null not permitted). | |
| 177 | * | |
| 178 | * @see #addRangeCrosshair(org.jfree.chart.plot.Crosshair) | |
| 179 | */ | |
| 180 | public void removeRangeCrosshair(Crosshair crosshair) { | |
| 181 |
1
1. removeRangeCrosshair : negated conditional → NO_COVERAGE |
if (crosshair == null) { |
| 182 | throw new IllegalArgumentException("Null 'crosshair' argument."); | |
| 183 | } | |
| 184 |
1
1. removeRangeCrosshair : negated conditional → NO_COVERAGE |
if (this.yCrosshairs.remove(crosshair)) { |
| 185 |
1
1. removeRangeCrosshair : removed call to org/jfree/chart/plot/Crosshair::removePropertyChangeListener → NO_COVERAGE |
crosshair.removePropertyChangeListener(this); |
| 186 |
1
1. removeRangeCrosshair : removed call to org/jfree/chart/panel/CrosshairOverlay::fireOverlayChanged → NO_COVERAGE |
fireOverlayChanged(); |
| 187 | } | |
| 188 | } | |
| 189 | ||
| 190 | /** | |
| 191 | * Clears all the range crosshairs from the overlay and sends an | |
| 192 | * {@link OverlayChangeEvent} to all registered listeners. | |
| 193 | */ | |
| 194 | public void clearRangeCrosshairs() { | |
| 195 |
1
1. clearRangeCrosshairs : negated conditional → NO_COVERAGE |
if (this.yCrosshairs.isEmpty()) { |
| 196 | return; // nothing to do | |
| 197 | } | |
| 198 | List crosshairs = getRangeCrosshairs(); | |
| 199 |
2
1. clearRangeCrosshairs : changed conditional boundary → NO_COVERAGE 2. clearRangeCrosshairs : negated conditional → NO_COVERAGE |
for (int i = 0; i < crosshairs.size(); i++) { |
| 200 | Crosshair c = (Crosshair) crosshairs.get(i); | |
| 201 | this.yCrosshairs.remove(c); | |
| 202 |
1
1. clearRangeCrosshairs : removed call to org/jfree/chart/plot/Crosshair::removePropertyChangeListener → NO_COVERAGE |
c.removePropertyChangeListener(this); |
| 203 | } | |
| 204 |
1
1. clearRangeCrosshairs : removed call to org/jfree/chart/panel/CrosshairOverlay::fireOverlayChanged → NO_COVERAGE |
fireOverlayChanged(); |
| 205 | } | |
| 206 | ||
| 207 | /** | |
| 208 | * Returns a new list containing the range crosshairs for this overlay. | |
| 209 | * | |
| 210 | * @return A list of crosshairs. | |
| 211 | */ | |
| 212 | public List getRangeCrosshairs() { | |
| 213 |
1
1. getRangeCrosshairs : mutated return of Object value for org/jfree/chart/panel/CrosshairOverlay::getRangeCrosshairs to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return new ArrayList(this.yCrosshairs); |
| 214 | } | |
| 215 | ||
| 216 | /** | |
| 217 | * Receives a property change event (typically a change in one of the | |
| 218 | * crosshairs). | |
| 219 | * | |
| 220 | * @param e the event. | |
| 221 | */ | |
| 222 | public void propertyChange(PropertyChangeEvent e) { | |
| 223 |
1
1. propertyChange : removed call to org/jfree/chart/panel/CrosshairOverlay::fireOverlayChanged → NO_COVERAGE |
fireOverlayChanged(); |
| 224 | } | |
| 225 | ||
| 226 | /** | |
| 227 | * Paints the crosshairs in the layer. | |
| 228 | * | |
| 229 | * @param g2 the graphics target. | |
| 230 | * @param chartPanel the chart panel. | |
| 231 | */ | |
| 232 | public void paintOverlay(Graphics2D g2, ChartPanel chartPanel) { | |
| 233 | Shape savedClip = g2.getClip(); | |
| 234 | Rectangle2D dataArea = chartPanel.getScreenDataArea(); | |
| 235 |
1
1. paintOverlay : removed call to java/awt/Graphics2D::clip → NO_COVERAGE |
g2.clip(dataArea); |
| 236 | JFreeChart chart = chartPanel.getChart(); | |
| 237 | XYPlot plot = (XYPlot) chart.getPlot(); | |
| 238 | ValueAxis xAxis = plot.getDomainAxis(); | |
| 239 | RectangleEdge xAxisEdge = plot.getDomainAxisEdge(); | |
| 240 | Iterator iterator = this.xCrosshairs.iterator(); | |
| 241 |
1
1. paintOverlay : negated conditional → NO_COVERAGE |
while (iterator.hasNext()) { |
| 242 | Crosshair ch = (Crosshair) iterator.next(); | |
| 243 |
1
1. paintOverlay : negated conditional → NO_COVERAGE |
if (ch.isVisible()) { |
| 244 | double x = ch.getValue(); | |
| 245 | double xx = xAxis.valueToJava2D(x, dataArea, xAxisEdge); | |
| 246 |
1
1. paintOverlay : negated conditional → NO_COVERAGE |
if (plot.getOrientation() == PlotOrientation.VERTICAL) { |
| 247 |
1
1. paintOverlay : removed call to org/jfree/chart/panel/CrosshairOverlay::drawVerticalCrosshair → NO_COVERAGE |
drawVerticalCrosshair(g2, dataArea, xx, ch); |
| 248 | } | |
| 249 | else { | |
| 250 |
1
1. paintOverlay : removed call to org/jfree/chart/panel/CrosshairOverlay::drawHorizontalCrosshair → NO_COVERAGE |
drawHorizontalCrosshair(g2, dataArea, xx, ch); |
| 251 | } | |
| 252 | } | |
| 253 | } | |
| 254 | ValueAxis yAxis = plot.getRangeAxis(); | |
| 255 | RectangleEdge yAxisEdge = plot.getRangeAxisEdge(); | |
| 256 | iterator = this.yCrosshairs.iterator(); | |
| 257 |
1
1. paintOverlay : negated conditional → NO_COVERAGE |
while (iterator.hasNext()) { |
| 258 | Crosshair ch = (Crosshair) iterator.next(); | |
| 259 |
1
1. paintOverlay : negated conditional → NO_COVERAGE |
if (ch.isVisible()) { |
| 260 | double y = ch.getValue(); | |
| 261 | double yy = yAxis.valueToJava2D(y, dataArea, yAxisEdge); | |
| 262 |
1
1. paintOverlay : negated conditional → NO_COVERAGE |
if (plot.getOrientation() == PlotOrientation.VERTICAL) { |
| 263 |
1
1. paintOverlay : removed call to org/jfree/chart/panel/CrosshairOverlay::drawHorizontalCrosshair → NO_COVERAGE |
drawHorizontalCrosshair(g2, dataArea, yy, ch); |
| 264 | } | |
| 265 | else { | |
| 266 |
1
1. paintOverlay : removed call to org/jfree/chart/panel/CrosshairOverlay::drawVerticalCrosshair → NO_COVERAGE |
drawVerticalCrosshair(g2, dataArea, yy, ch); |
| 267 | } | |
| 268 | } | |
| 269 | } | |
| 270 |
1
1. paintOverlay : removed call to java/awt/Graphics2D::setClip → NO_COVERAGE |
g2.setClip(savedClip); |
| 271 | } | |
| 272 | ||
| 273 | /** | |
| 274 | * Draws a crosshair horizontally across the plot. | |
| 275 | * | |
| 276 | * @param g2 the graphics target. | |
| 277 | * @param dataArea the data area. | |
| 278 | * @param y the y-value in Java2D space. | |
| 279 | * @param crosshair the crosshair. | |
| 280 | */ | |
| 281 | protected void drawHorizontalCrosshair(Graphics2D g2, Rectangle2D dataArea, | |
| 282 | double y, Crosshair crosshair) { | |
| 283 | ||
| 284 |
4
1. drawHorizontalCrosshair : changed conditional boundary → NO_COVERAGE 2. drawHorizontalCrosshair : changed conditional boundary → NO_COVERAGE 3. drawHorizontalCrosshair : negated conditional → NO_COVERAGE 4. drawHorizontalCrosshair : negated conditional → NO_COVERAGE |
if (y >= dataArea.getMinY() && y <= dataArea.getMaxY()) { |
| 285 | Line2D line = new Line2D.Double(dataArea.getMinX(), y, | |
| 286 | dataArea.getMaxX(), y); | |
| 287 | Paint savedPaint = g2.getPaint(); | |
| 288 | Stroke savedStroke = g2.getStroke(); | |
| 289 |
1
1. drawHorizontalCrosshair : removed call to java/awt/Graphics2D::setPaint → NO_COVERAGE |
g2.setPaint(crosshair.getPaint()); |
| 290 |
1
1. drawHorizontalCrosshair : removed call to java/awt/Graphics2D::setStroke → NO_COVERAGE |
g2.setStroke(crosshair.getStroke()); |
| 291 |
1
1. drawHorizontalCrosshair : removed call to java/awt/Graphics2D::draw → NO_COVERAGE |
g2.draw(line); |
| 292 |
1
1. drawHorizontalCrosshair : negated conditional → NO_COVERAGE |
if (crosshair.isLabelVisible()) { |
| 293 | String label = crosshair.getLabelGenerator().generateLabel( | |
| 294 | crosshair); | |
| 295 | RectangleAnchor anchor = crosshair.getLabelAnchor(); | |
| 296 | Point2D pt = calculateLabelPoint(line, anchor, 5, 5); | |
| 297 | float xx = (float) pt.getX(); | |
| 298 | float yy = (float) pt.getY(); | |
| 299 | TextAnchor alignPt = textAlignPtForLabelAnchorH(anchor); | |
| 300 | Shape hotspot = TextUtilities.calculateRotatedStringBounds( | |
| 301 | label, g2, xx, yy, alignPt, 0.0, TextAnchor.CENTER); | |
| 302 |
1
1. drawHorizontalCrosshair : negated conditional → NO_COVERAGE |
if (!dataArea.contains(hotspot.getBounds2D())) { |
| 303 | anchor = flipAnchorV(anchor); | |
| 304 | pt = calculateLabelPoint(line, anchor, 5, 5); | |
| 305 | xx = (float) pt.getX(); | |
| 306 | yy = (float) pt.getY(); | |
| 307 | alignPt = textAlignPtForLabelAnchorH(anchor); | |
| 308 | hotspot = TextUtilities.calculateRotatedStringBounds( | |
| 309 | label, g2, xx, yy, alignPt, 0.0, TextAnchor.CENTER); | |
| 310 | } | |
| 311 | ||
| 312 |
1
1. drawHorizontalCrosshair : removed call to java/awt/Graphics2D::setPaint → NO_COVERAGE |
g2.setPaint(crosshair.getLabelBackgroundPaint()); |
| 313 |
1
1. drawHorizontalCrosshair : removed call to java/awt/Graphics2D::fill → NO_COVERAGE |
g2.fill(hotspot); |
| 314 |
1
1. drawHorizontalCrosshair : removed call to java/awt/Graphics2D::setPaint → NO_COVERAGE |
g2.setPaint(crosshair.getLabelOutlinePaint()); |
| 315 |
1
1. drawHorizontalCrosshair : removed call to java/awt/Graphics2D::draw → NO_COVERAGE |
g2.draw(hotspot); |
| 316 | TextUtilities.drawAlignedString(label, g2, xx, yy, alignPt); | |
| 317 | } | |
| 318 |
1
1. drawHorizontalCrosshair : removed call to java/awt/Graphics2D::setPaint → NO_COVERAGE |
g2.setPaint(savedPaint); |
| 319 |
1
1. drawHorizontalCrosshair : removed call to java/awt/Graphics2D::setStroke → NO_COVERAGE |
g2.setStroke(savedStroke); |
| 320 | } | |
| 321 | } | |
| 322 | ||
| 323 | /** | |
| 324 | * Draws a crosshair vertically on the plot. | |
| 325 | * | |
| 326 | * @param g2 the graphics target. | |
| 327 | * @param dataArea the data area. | |
| 328 | * @param x the x-value in Java2D space. | |
| 329 | * @param crosshair the crosshair. | |
| 330 | */ | |
| 331 | protected void drawVerticalCrosshair(Graphics2D g2, Rectangle2D dataArea, | |
| 332 | double x, Crosshair crosshair) { | |
| 333 | ||
| 334 |
4
1. drawVerticalCrosshair : changed conditional boundary → NO_COVERAGE 2. drawVerticalCrosshair : changed conditional boundary → NO_COVERAGE 3. drawVerticalCrosshair : negated conditional → NO_COVERAGE 4. drawVerticalCrosshair : negated conditional → NO_COVERAGE |
if (x >= dataArea.getMinX() && x <= dataArea.getMaxX()) { |
| 335 | Line2D line = new Line2D.Double(x, dataArea.getMinY(), x, | |
| 336 | dataArea.getMaxY()); | |
| 337 | Paint savedPaint = g2.getPaint(); | |
| 338 | Stroke savedStroke = g2.getStroke(); | |
| 339 |
1
1. drawVerticalCrosshair : removed call to java/awt/Graphics2D::setPaint → NO_COVERAGE |
g2.setPaint(crosshair.getPaint()); |
| 340 |
1
1. drawVerticalCrosshair : removed call to java/awt/Graphics2D::setStroke → NO_COVERAGE |
g2.setStroke(crosshair.getStroke()); |
| 341 |
1
1. drawVerticalCrosshair : removed call to java/awt/Graphics2D::draw → NO_COVERAGE |
g2.draw(line); |
| 342 |
1
1. drawVerticalCrosshair : negated conditional → NO_COVERAGE |
if (crosshair.isLabelVisible()) { |
| 343 | String label = crosshair.getLabelGenerator().generateLabel( | |
| 344 | crosshair); | |
| 345 | RectangleAnchor anchor = crosshair.getLabelAnchor(); | |
| 346 | Point2D pt = calculateLabelPoint(line, anchor, 5, 5); | |
| 347 | float xx = (float) pt.getX(); | |
| 348 | float yy = (float) pt.getY(); | |
| 349 | TextAnchor alignPt = textAlignPtForLabelAnchorV(anchor); | |
| 350 | Shape hotspot = TextUtilities.calculateRotatedStringBounds( | |
| 351 | label, g2, xx, yy, alignPt, 0.0, TextAnchor.CENTER); | |
| 352 |
1
1. drawVerticalCrosshair : negated conditional → NO_COVERAGE |
if (!dataArea.contains(hotspot.getBounds2D())) { |
| 353 | anchor = flipAnchorH(anchor); | |
| 354 | pt = calculateLabelPoint(line, anchor, 5, 5); | |
| 355 | xx = (float) pt.getX(); | |
| 356 | yy = (float) pt.getY(); | |
| 357 | alignPt = textAlignPtForLabelAnchorV(anchor); | |
| 358 | hotspot = TextUtilities.calculateRotatedStringBounds( | |
| 359 | label, g2, xx, yy, alignPt, 0.0, TextAnchor.CENTER); | |
| 360 | } | |
| 361 |
1
1. drawVerticalCrosshair : removed call to java/awt/Graphics2D::setPaint → NO_COVERAGE |
g2.setPaint(crosshair.getLabelBackgroundPaint()); |
| 362 |
1
1. drawVerticalCrosshair : removed call to java/awt/Graphics2D::fill → NO_COVERAGE |
g2.fill(hotspot); |
| 363 |
1
1. drawVerticalCrosshair : removed call to java/awt/Graphics2D::setPaint → NO_COVERAGE |
g2.setPaint(crosshair.getLabelOutlinePaint()); |
| 364 |
1
1. drawVerticalCrosshair : removed call to java/awt/Graphics2D::draw → NO_COVERAGE |
g2.draw(hotspot); |
| 365 | TextUtilities.drawAlignedString(label, g2, xx, yy, alignPt); | |
| 366 | } | |
| 367 |
1
1. drawVerticalCrosshair : removed call to java/awt/Graphics2D::setPaint → NO_COVERAGE |
g2.setPaint(savedPaint); |
| 368 |
1
1. drawVerticalCrosshair : removed call to java/awt/Graphics2D::setStroke → NO_COVERAGE |
g2.setStroke(savedStroke); |
| 369 | } | |
| 370 | } | |
| 371 | ||
| 372 | /** | |
| 373 | * Calculates the anchor point for a label. | |
| 374 | * | |
| 375 | * @param line the line for the crosshair. | |
| 376 | * @param anchor the anchor point. | |
| 377 | * @param deltaX the x-offset. | |
| 378 | * @param deltaY the y-offset. | |
| 379 | * | |
| 380 | * @return The anchor point. | |
| 381 | */ | |
| 382 | private Point2D calculateLabelPoint(Line2D line, RectangleAnchor anchor, | |
| 383 | double deltaX, double deltaY) { | |
| 384 | double x = 0.0; | |
| 385 | double y = 0.0; | |
| 386 |
3
1. calculateLabelPoint : negated conditional → NO_COVERAGE 2. calculateLabelPoint : negated conditional → NO_COVERAGE 3. calculateLabelPoint : negated conditional → NO_COVERAGE |
boolean left = (anchor == RectangleAnchor.BOTTOM_LEFT |
| 387 | || anchor == RectangleAnchor.LEFT | |
| 388 | || anchor == RectangleAnchor.TOP_LEFT); | |
| 389 |
3
1. calculateLabelPoint : negated conditional → NO_COVERAGE 2. calculateLabelPoint : negated conditional → NO_COVERAGE 3. calculateLabelPoint : negated conditional → NO_COVERAGE |
boolean right = (anchor == RectangleAnchor.BOTTOM_RIGHT |
| 390 | || anchor == RectangleAnchor.RIGHT | |
| 391 | || anchor == RectangleAnchor.TOP_RIGHT); | |
| 392 |
3
1. calculateLabelPoint : negated conditional → NO_COVERAGE 2. calculateLabelPoint : negated conditional → NO_COVERAGE 3. calculateLabelPoint : negated conditional → NO_COVERAGE |
boolean top = (anchor == RectangleAnchor.TOP_LEFT |
| 393 | || anchor == RectangleAnchor.TOP | |
| 394 | || anchor == RectangleAnchor.TOP_RIGHT); | |
| 395 |
3
1. calculateLabelPoint : negated conditional → NO_COVERAGE 2. calculateLabelPoint : negated conditional → NO_COVERAGE 3. calculateLabelPoint : negated conditional → NO_COVERAGE |
boolean bottom = (anchor == RectangleAnchor.BOTTOM_LEFT |
| 396 | || anchor == RectangleAnchor.BOTTOM | |
| 397 | || anchor == RectangleAnchor.BOTTOM_RIGHT); | |
| 398 | Rectangle rect = line.getBounds(); | |
| 399 | ||
| 400 | // we expect the line to be vertical or horizontal | |
| 401 |
1
1. calculateLabelPoint : negated conditional → NO_COVERAGE |
if (line.getX1() == line.getX2()) { // vertical |
| 402 | x = line.getX1(); | |
| 403 |
2
1. calculateLabelPoint : Replaced double addition with subtraction → NO_COVERAGE 2. calculateLabelPoint : Replaced double division with multiplication → NO_COVERAGE |
y = (line.getY1() + line.getY2()) / 2.0; |
| 404 |
1
1. calculateLabelPoint : negated conditional → NO_COVERAGE |
if (left) { |
| 405 |
1
1. calculateLabelPoint : Replaced double subtraction with addition → NO_COVERAGE |
x = x - deltaX; |
| 406 | } | |
| 407 |
1
1. calculateLabelPoint : negated conditional → NO_COVERAGE |
if (right) { |
| 408 |
1
1. calculateLabelPoint : Replaced double addition with subtraction → NO_COVERAGE |
x = x + deltaX; |
| 409 | } | |
| 410 |
1
1. calculateLabelPoint : negated conditional → NO_COVERAGE |
if (top) { |
| 411 |
1
1. calculateLabelPoint : Replaced double addition with subtraction → NO_COVERAGE |
y = Math.min(line.getY1(), line.getY2()) + deltaY; |
| 412 | } | |
| 413 |
1
1. calculateLabelPoint : negated conditional → NO_COVERAGE |
if (bottom) { |
| 414 |
1
1. calculateLabelPoint : Replaced double subtraction with addition → NO_COVERAGE |
y = Math.max(line.getY1(), line.getY2()) - deltaY; |
| 415 | } | |
| 416 | } | |
| 417 | else { // horizontal | |
| 418 |
2
1. calculateLabelPoint : Replaced double addition with subtraction → NO_COVERAGE 2. calculateLabelPoint : Replaced double division with multiplication → NO_COVERAGE |
x = (line.getX1() + line.getX2()) / 2.0; |
| 419 | y = line.getY1(); | |
| 420 |
1
1. calculateLabelPoint : negated conditional → NO_COVERAGE |
if (left) { |
| 421 |
1
1. calculateLabelPoint : Replaced double addition with subtraction → NO_COVERAGE |
x = Math.min(line.getX1(), line.getX2()) + deltaX; |
| 422 | } | |
| 423 |
1
1. calculateLabelPoint : negated conditional → NO_COVERAGE |
if (right) { |
| 424 |
1
1. calculateLabelPoint : Replaced double subtraction with addition → NO_COVERAGE |
x = Math.max(line.getX1(), line.getX2()) - deltaX; |
| 425 | } | |
| 426 |
1
1. calculateLabelPoint : negated conditional → NO_COVERAGE |
if (top) { |
| 427 |
1
1. calculateLabelPoint : Replaced double subtraction with addition → NO_COVERAGE |
y = y - deltaY; |
| 428 | } | |
| 429 |
1
1. calculateLabelPoint : negated conditional → NO_COVERAGE |
if (bottom) { |
| 430 |
1
1. calculateLabelPoint : Replaced double addition with subtraction → NO_COVERAGE |
y = y + deltaY; |
| 431 | } | |
| 432 | } | |
| 433 |
1
1. calculateLabelPoint : mutated return of Object value for org/jfree/chart/panel/CrosshairOverlay::calculateLabelPoint to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return new Point2D.Double(x, y); |
| 434 | } | |
| 435 | ||
| 436 | /** | |
| 437 | * Returns the text anchor that is used to align a label to its anchor | |
| 438 | * point. | |
| 439 | * | |
| 440 | * @param anchor the anchor. | |
| 441 | * | |
| 442 | * @return The text alignment point. | |
| 443 | */ | |
| 444 | private TextAnchor textAlignPtForLabelAnchorV(RectangleAnchor anchor) { | |
| 445 | TextAnchor result = TextAnchor.CENTER; | |
| 446 |
1
1. textAlignPtForLabelAnchorV : negated conditional → NO_COVERAGE |
if (anchor.equals(RectangleAnchor.TOP_LEFT)) { |
| 447 | result = TextAnchor.TOP_RIGHT; | |
| 448 | } | |
| 449 |
1
1. textAlignPtForLabelAnchorV : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.TOP)) { |
| 450 | result = TextAnchor.TOP_CENTER; | |
| 451 | } | |
| 452 |
1
1. textAlignPtForLabelAnchorV : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.TOP_RIGHT)) { |
| 453 | result = TextAnchor.TOP_LEFT; | |
| 454 | } | |
| 455 |
1
1. textAlignPtForLabelAnchorV : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.LEFT)) { |
| 456 | result = TextAnchor.HALF_ASCENT_RIGHT; | |
| 457 | } | |
| 458 |
1
1. textAlignPtForLabelAnchorV : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.RIGHT)) { |
| 459 | result = TextAnchor.HALF_ASCENT_LEFT; | |
| 460 | } | |
| 461 |
1
1. textAlignPtForLabelAnchorV : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.BOTTOM_LEFT)) { |
| 462 | result = TextAnchor.BOTTOM_RIGHT; | |
| 463 | } | |
| 464 |
1
1. textAlignPtForLabelAnchorV : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.BOTTOM)) { |
| 465 | result = TextAnchor.BOTTOM_CENTER; | |
| 466 | } | |
| 467 |
1
1. textAlignPtForLabelAnchorV : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.BOTTOM_RIGHT)) { |
| 468 | result = TextAnchor.BOTTOM_LEFT; | |
| 469 | } | |
| 470 |
1
1. textAlignPtForLabelAnchorV : mutated return of Object value for org/jfree/chart/panel/CrosshairOverlay::textAlignPtForLabelAnchorV to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return result; |
| 471 | } | |
| 472 | ||
| 473 | /** | |
| 474 | * Returns the text anchor that is used to align a label to its anchor | |
| 475 | * point. | |
| 476 | * | |
| 477 | * @param anchor the anchor. | |
| 478 | * | |
| 479 | * @return The text alignment point. | |
| 480 | */ | |
| 481 | private TextAnchor textAlignPtForLabelAnchorH(RectangleAnchor anchor) { | |
| 482 | TextAnchor result = TextAnchor.CENTER; | |
| 483 |
1
1. textAlignPtForLabelAnchorH : negated conditional → NO_COVERAGE |
if (anchor.equals(RectangleAnchor.TOP_LEFT)) { |
| 484 | result = TextAnchor.BOTTOM_LEFT; | |
| 485 | } | |
| 486 |
1
1. textAlignPtForLabelAnchorH : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.TOP)) { |
| 487 | result = TextAnchor.BOTTOM_CENTER; | |
| 488 | } | |
| 489 |
1
1. textAlignPtForLabelAnchorH : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.TOP_RIGHT)) { |
| 490 | result = TextAnchor.BOTTOM_RIGHT; | |
| 491 | } | |
| 492 |
1
1. textAlignPtForLabelAnchorH : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.LEFT)) { |
| 493 | result = TextAnchor.HALF_ASCENT_LEFT; | |
| 494 | } | |
| 495 |
1
1. textAlignPtForLabelAnchorH : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.RIGHT)) { |
| 496 | result = TextAnchor.HALF_ASCENT_RIGHT; | |
| 497 | } | |
| 498 |
1
1. textAlignPtForLabelAnchorH : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.BOTTOM_LEFT)) { |
| 499 | result = TextAnchor.TOP_LEFT; | |
| 500 | } | |
| 501 |
1
1. textAlignPtForLabelAnchorH : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.BOTTOM)) { |
| 502 | result = TextAnchor.TOP_CENTER; | |
| 503 | } | |
| 504 |
1
1. textAlignPtForLabelAnchorH : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.BOTTOM_RIGHT)) { |
| 505 | result = TextAnchor.TOP_RIGHT; | |
| 506 | } | |
| 507 |
1
1. textAlignPtForLabelAnchorH : mutated return of Object value for org/jfree/chart/panel/CrosshairOverlay::textAlignPtForLabelAnchorH to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return result; |
| 508 | } | |
| 509 | ||
| 510 | private RectangleAnchor flipAnchorH(RectangleAnchor anchor) { | |
| 511 | RectangleAnchor result = anchor; | |
| 512 |
1
1. flipAnchorH : negated conditional → NO_COVERAGE |
if (anchor.equals(RectangleAnchor.TOP_LEFT)) { |
| 513 | result = RectangleAnchor.TOP_RIGHT; | |
| 514 | } | |
| 515 |
1
1. flipAnchorH : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.TOP_RIGHT)) { |
| 516 | result = RectangleAnchor.TOP_LEFT; | |
| 517 | } | |
| 518 |
1
1. flipAnchorH : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.LEFT)) { |
| 519 | result = RectangleAnchor.RIGHT; | |
| 520 | } | |
| 521 |
1
1. flipAnchorH : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.RIGHT)) { |
| 522 | result = RectangleAnchor.LEFT; | |
| 523 | } | |
| 524 |
1
1. flipAnchorH : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.BOTTOM_LEFT)) { |
| 525 | result = RectangleAnchor.BOTTOM_RIGHT; | |
| 526 | } | |
| 527 |
1
1. flipAnchorH : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.BOTTOM_RIGHT)) { |
| 528 | result = RectangleAnchor.BOTTOM_LEFT; | |
| 529 | } | |
| 530 |
1
1. flipAnchorH : mutated return of Object value for org/jfree/chart/panel/CrosshairOverlay::flipAnchorH to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return result; |
| 531 | } | |
| 532 | ||
| 533 | private RectangleAnchor flipAnchorV(RectangleAnchor anchor) { | |
| 534 | RectangleAnchor result = anchor; | |
| 535 |
1
1. flipAnchorV : negated conditional → NO_COVERAGE |
if (anchor.equals(RectangleAnchor.TOP_LEFT)) { |
| 536 | result = RectangleAnchor.BOTTOM_LEFT; | |
| 537 | } | |
| 538 |
1
1. flipAnchorV : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.TOP_RIGHT)) { |
| 539 | result = RectangleAnchor.BOTTOM_RIGHT; | |
| 540 | } | |
| 541 |
1
1. flipAnchorV : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.TOP)) { |
| 542 | result = RectangleAnchor.BOTTOM; | |
| 543 | } | |
| 544 |
1
1. flipAnchorV : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.BOTTOM)) { |
| 545 | result = RectangleAnchor.TOP; | |
| 546 | } | |
| 547 |
1
1. flipAnchorV : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.BOTTOM_LEFT)) { |
| 548 | result = RectangleAnchor.TOP_LEFT; | |
| 549 | } | |
| 550 |
1
1. flipAnchorV : negated conditional → NO_COVERAGE |
else if (anchor.equals(RectangleAnchor.BOTTOM_RIGHT)) { |
| 551 | result = RectangleAnchor.TOP_RIGHT; | |
| 552 | } | |
| 553 |
1
1. flipAnchorV : mutated return of Object value for org/jfree/chart/panel/CrosshairOverlay::flipAnchorV to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return result; |
| 554 | } | |
| 555 | ||
| 556 | /** | |
| 557 | * Tests this overlay for equality with an arbitrary object. | |
| 558 | * | |
| 559 | * @param obj the object (null permitted). | |
| 560 | * | |
| 561 | * @return A boolean. | |
| 562 | */ | |
| 563 | public boolean equals(Object obj) { | |
| 564 |
1
1. equals : negated conditional → NO_COVERAGE |
if (obj == this) { |
| 565 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return true; |
| 566 | } | |
| 567 |
1
1. equals : negated conditional → NO_COVERAGE |
if (!(obj instanceof CrosshairOverlay)) { |
| 568 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 569 | } | |
| 570 | CrosshairOverlay that = (CrosshairOverlay) obj; | |
| 571 |
1
1. equals : negated conditional → NO_COVERAGE |
if (!this.xCrosshairs.equals(that.xCrosshairs)) { |
| 572 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 573 | } | |
| 574 |
1
1. equals : negated conditional → NO_COVERAGE |
if (!this.yCrosshairs.equals(that.yCrosshairs)) { |
| 575 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 576 | } | |
| 577 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return true; |
| 578 | } | |
| 579 | ||
| 580 | /** | |
| 581 | * Returns a clone of this instance. | |
| 582 | * | |
| 583 | * @return A clone of this instance. | |
| 584 | * | |
| 585 | * @throws java.lang.CloneNotSupportedException if there is some problem | |
| 586 | * with the cloning. | |
| 587 | */ | |
| 588 | public Object clone() throws CloneNotSupportedException { | |
| 589 | CrosshairOverlay clone = (CrosshairOverlay) super.clone(); | |
| 590 | clone.xCrosshairs = (List) ObjectUtilities.deepClone(this.xCrosshairs); | |
| 591 | clone.yCrosshairs = (List) ObjectUtilities.deepClone(this.yCrosshairs); | |
| 592 |
1
1. clone : mutated return of Object value for org/jfree/chart/panel/CrosshairOverlay::clone to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return clone; |
| 593 | } | |
| 594 | ||
| 595 | } | |
| 596 | ||
Mutations | ||
| 105 |
1.1 |
|
| 109 |
1.1 |
|
| 110 |
1.1 |
|
| 122 |
1.1 |
|
| 125 |
1.1 |
|
| 126 |
1.1 |
|
| 127 |
1.1 |
|
| 136 |
1.1 |
|
| 140 |
1.1 2.2 |
|
| 143 |
1.1 |
|
| 145 |
1.1 |
|
| 154 |
1.1 |
|
| 164 |
1.1 |
|
| 168 |
1.1 |
|
| 169 |
1.1 |
|
| 181 |
1.1 |
|
| 184 |
1.1 |
|
| 185 |
1.1 |
|
| 186 |
1.1 |
|
| 195 |
1.1 |
|
| 199 |
1.1 2.2 |
|
| 202 |
1.1 |
|
| 204 |
1.1 |
|
| 213 |
1.1 |
|
| 223 |
1.1 |
|
| 235 |
1.1 |
|
| 241 |
1.1 |
|
| 243 |
1.1 |
|
| 246 |
1.1 |
|
| 247 |
1.1 |
|
| 250 |
1.1 |
|
| 257 |
1.1 |
|
| 259 |
1.1 |
|
| 262 |
1.1 |
|
| 263 |
1.1 |
|
| 266 |
1.1 |
|
| 270 |
1.1 |
|
| 284 |
1.1 2.2 3.3 4.4 |
|
| 289 |
1.1 |
|
| 290 |
1.1 |
|
| 291 |
1.1 |
|
| 292 |
1.1 |
|
| 302 |
1.1 |
|
| 312 |
1.1 |
|
| 313 |
1.1 |
|
| 314 |
1.1 |
|
| 315 |
1.1 |
|
| 318 |
1.1 |
|
| 319 |
1.1 |
|
| 334 |
1.1 2.2 3.3 4.4 |
|
| 339 |
1.1 |
|
| 340 |
1.1 |
|
| 341 |
1.1 |
|
| 342 |
1.1 |
|
| 352 |
1.1 |
|
| 361 |
1.1 |
|
| 362 |
1.1 |
|
| 363 |
1.1 |
|
| 364 |
1.1 |
|
| 367 |
1.1 |
|
| 368 |
1.1 |
|
| 386 |
1.1 2.2 3.3 |
|
| 389 |
1.1 2.2 3.3 |
|
| 392 |
1.1 2.2 3.3 |
|
| 395 |
1.1 2.2 3.3 |
|
| 401 |
1.1 |
|
| 403 |
1.1 2.2 |
|
| 404 |
1.1 |
|
| 405 |
1.1 |
|
| 407 |
1.1 |
|
| 408 |
1.1 |
|
| 410 |
1.1 |
|
| 411 |
1.1 |
|
| 413 |
1.1 |
|
| 414 |
1.1 |
|
| 418 |
1.1 2.2 |
|
| 420 |
1.1 |
|
| 421 |
1.1 |
|
| 423 |
1.1 |
|
| 424 |
1.1 |
|
| 426 |
1.1 |
|
| 427 |
1.1 |
|
| 429 |
1.1 |
|
| 430 |
1.1 |
|
| 433 |
1.1 |
|
| 446 |
1.1 |
|
| 449 |
1.1 |
|
| 452 |
1.1 |
|
| 455 |
1.1 |
|
| 458 |
1.1 |
|
| 461 |
1.1 |
|
| 464 |
1.1 |
|
| 467 |
1.1 |
|
| 470 |
1.1 |
|
| 483 |
1.1 |
|
| 486 |
1.1 |
|
| 489 |
1.1 |
|
| 492 |
1.1 |
|
| 495 |
1.1 |
|
| 498 |
1.1 |
|
| 501 |
1.1 |
|
| 504 |
1.1 |
|
| 507 |
1.1 |
|
| 512 |
1.1 |
|
| 515 |
1.1 |
|
| 518 |
1.1 |
|
| 521 |
1.1 |
|
| 524 |
1.1 |
|
| 527 |
1.1 |
|
| 530 |
1.1 |
|
| 535 |
1.1 |
|
| 538 |
1.1 |
|
| 541 |
1.1 |
|
| 544 |
1.1 |
|
| 547 |
1.1 |
|
| 550 |
1.1 |
|
| 553 |
1.1 |
|
| 564 |
1.1 |
|
| 565 |
1.1 |
|
| 567 |
1.1 |
|
| 568 |
1.1 |
|
| 571 |
1.1 |
|
| 572 |
1.1 |
|
| 574 |
1.1 |
|
| 575 |
1.1 |
|
| 577 |
1.1 |
|
| 592 |
1.1 |


Brennin Young
About
Portfolio
Contact
Portfolio
Hangman
RPG Game
Trivia Game
Rutgers Info Widget
Rock Paper Scissors


| Home | Trees | Index | Help |
|---|
| Package svnmailer :: Package notifier :: Module _text :: Class TextNotifier |
|
object
--+ |BaseNotifier
--+ | TextNotifier
MailNotifier
,
StdoutNotifier
Base class for plain text notifications
The derived class must implement the run method.
| Method Summary | |
|---|---|
Initialization | |
Write the path list of a particular changeset | |
| str |
Returns the revision date in a human readable format |
Runs the notifier (abstract method) | |
Writes the content diff for a particular change | |
| str |
Writes the content diff action for a particular change |
Writes a diff | |
Writes the commit diffs | |
Writes the locking metadata | |
Writes the commit metadata output | |
Writes a short info about the kind of change | |
Writes the commit path list | |
Writes a property diff | |
| str |
Writes the property diff action for a particular change |
Writes the property diffs for a particular change | |
Writes the revision property change data | |
| Inherited from BaseNotifier | |
| str |
Returns the encoding for the specified path and revision |
| tuple |
Dump the two revisions of a particular change |
| str |
Returns the author of the revision |
Returns the browser generator if any | |
| unicode |
Returns the content diff action for a particular change |
| str |
Returns the content diff url for a particular change |
| str |
Returns the content encoding property for a path/rev |
| tuple |
Returns the encodings of the change content (base and current rev) |
| svnmailer.differ.* |
Returns the initialized differ |
| tuple |
Returns valid diff tokens and tests |
| str |
Returns the encoding extracted from svn:mime-type |
| str |
Returns the log entry of the revision |
| unicode |
Returns the property diff action for a particular change |
| unicode or str |
Returns the temporary directory |
svnmailer.util.TempFile |
Returns an open temporary file container object |
| int |
Returns the time of the revision in seconds since epoch |
| str |
Returns the revision URL |
| bool |
Returns if the supplied property seems to be binary |
| bool |
Returns if the supplied property value takes just one line |
| bool |
Returns if the supplied property name represents an UTF-8 property |
| Inherited from object | |
x.__delattr__('name') <==> del x.name... | |
x.__getattribute__('name') <==> x.name... | |
x.__hash__() <==> hash(x)... | |
helper for pickle... | |
helper for pickle... | |
x.__repr__() <==> repr(x)... | |
x.__setattr__('name', value) <==> x.name = value... | |
x.__str__() <==> str(x)... | |
| Inherited from type | |
T.__new__(S, ...) -> a new object with type S, a subtype of T... |
| Instance Variable Summary | |
|---|---|
| list | changeset : The list of changes to process |
svnmailer.settings._base.GroupSettingsContainer |
config : The group config |
| svnmailer.differ.* | differ : The differ object |
| file like object | fp : The file to write to |
| Inherited from BaseNotifier | |
svnmailer.main.GroupSet |
_groupset : The groupset to process |
| dict | _penc_cache : The (path, rev) -> property encoding cache |
svnmailer.settings._base.BaseSettings |
_settings : The settings to use |
| Class Variable Summary | |
|---|---|
list |
__implements__ = [<class 'svnmailer.notifier._base.BaseN...
|
| str | OUTPUT_SEPARATOR : the separator between headline and diff |
| str | OUTPUT_SEPARATOR_LIGHT : the separator between headline and
property diff |
| Inherited from BaseNotifier | |
| tuple | _diffable_tests : Maps generate_diffs list entrys to change
methods |
| unicode | ADD : "add" token |
| unicode | COPY : "copy" token |
| unicode | DELETE : "delete" token |
| str | ENC_CONFIG : Magic value, meaning that the content encoding should
be retrieved from the config |
| str | ENC_DEFAULT : Magic value to determine if the default encoding
should be displayed |
| str | ENC_PROPERTY : The property name, where encodings could be stored |
| unicode | MODIFY : "modify" token |
| unicode | NONE : "none" token |
| unicode | PROPCHANGE : "propchange" token |
| Method Details |
|---|
__init__(self,
settings,
groupset)
Initialization
|
_doWritePathList(self, set)Write the path list of a particular changeset
|
getDate(self, oftime=None)Returns the revision date in a human readable format
|
run(self)Runs the notifier (abstract method)
|
writeContentDiff(self, change, raw=False)Writes the content diff for a particular change
|
writeContentDiffAction(self, change)Writes the content diff action for a particular change
|
writeDiff(self, token, name1, name2, value1, value2, isfile=False, rec1=None, rec2=None, time=None)Writes a diff By default
|
writeDiffList(self)Writes the commit diffs |
writeLockData(self)Writes the locking metadata |
writeMetaData(self)Writes the commit metadata output |
writePathInfo(self, change)Writes a short info about the kind of change
|
writePathList(self)Writes the commit path list |
writePropertyDiff(self, token, name, value1, value2, time=None, raw=False)Writes a property diff
|
writePropertyDiffAction(self, change, name, values, diff_tokens)Writes the property diff action for a particular change
|
writePropertyDiffs(self, diff_tokens, change, raw=False)Writes the property diffs for a particular change
|
writeRevPropData(self, raw=False)Writes the revision property change data
|
| Instance Variable Details |
|---|
changesetThe list of changes to process
|
configThe group config |
differThe differ object
|
fpThe file to write to
|
| Class Variable Details |
|---|
__implements__
|
OUTPUT_SEPARATORthe separator between headline and diff
|
OUTPUT_SEPARATOR_LIGHTthe separator between headline and property diff
|
| Home | Trees | Index | Help |
|---|
| Generated by Epydoc 2.0 on Sun Sep 25 20:49:16 2005 | http://epydoc.sf.net |


--- title: Ivor Epstein date: 1998-07-15T10:00:00.000Z country: Egypt thinkLotrRules: Of course ---
How about extending your family tree fully back to as many generations as you can?


I am a Developer.I have experience in Web Development and I also work as Python Developer. I am a student at University of Calcutta,India pursuing my Bachelor's Degree in Computer Science.
I am constantly improving my skills because I don't like being part of the crowd.I am always striving to be a better version of myself. I love the logic and structure of coding and always strive to write elegant and efficient code whether it's HTML, CSS , Javascript or Python.
When i'm not coding or working on projects, you'll find me watching anime or reading manga.
View ResumeA face recognition app created using React using Clarifai API. There are sign in and register options and the credentilas are stored in a database with hashed passwords. The user has to input an image URL so that the app can detect face in it.
A create-react-app where you can search for robot friends and their contact cards will be displayed dynamically. It uses https://robohash.org/ API to fetch robots.
A simple monthly budget calculator created using HTML5, CSS3 and Javascript. This was one of the first projects I made while learning Web Development. It works in a simple way - enter your expenses and income and the remaining budget is automatically calculated for you !
Dice rolling game, making use of DOM and Javascript basics to create an interactive game. Scores can be changed by typing a target score in an input box.
 The object of the game is to turn over pairs of matching cards.
A fully responsive food delivery website created using HTML, CSS and Javascript.
Would you like to work with me ? Awesome !
Let's build together


I'm currently working as a front end developer at Croatian Telecom. At the same time I am a final year student of Business Information Technology at Vern.
Working in a team that consists of 8 experts from various fields, we are responsible for developing and delivering fully functional business solutions. Working on Billing Web Aplication
Technical and sales support in the creation and modification of digital content. (CMS)
Stock management
Product catalog admin
Administrator for bussines users
Creating web aplication usgin APEX 5.0 and Oracle database
Creating database according to user requirements


{% extends "base/base_site.html" %} {% block title %}Dashboard{% endblock title %} {% block content %}
You can select one of the listed effects. The LED strip will immediately react by changing the mode. To edit the effect, select the "Edit Effects" option on the left sidebar.


UH Groupings
Welcome, !
Role: Admin Owner Member
Administration
Manage the list of Administrators for this service. Search for and manage any grouping on behalf of the owner.
AdminMemberships
View and manage my memberships. Search for new groupings to join as a member.
MembershipsGroupings
Review members, manage Include and Exclude lists, configure preferences, and export members.
Groupings